{
  "match_info": {
    "home_team": "Arsenal",
    "away_team": "Hull",
    "tournament": "Premier League",
    "date": "20261107",
    "timezone": "America/New_York",
    "home_formation": "4-2-3-1",
    "away_formation": "5-4-1",
    "lineup_status": "projected_from_squad",
    "lineup_source": "/teams/get-squad",
    "lineup_confirmed": false,
    "lineup_confidence": 0.45
  },
  "prediction": {
    "most_likely_score": "1-0",
    "home_goals": 1,
    "away_goals": 0,
    "most_likely_score_probability": 0.1201,
    "most_likely_winning_score_home": "1-0",
    "most_likely_winning_score_home_probability": 0.1201,
    "most_likely_winning_score_away": "0-1",
    "most_likely_winning_score_away_probability": 0.0495,
    "match_resolution": "regulation",
    "predicted_winner": "Arsenal",
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.2092,
      "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-0",
        "probability": 0.1201
      },
      {
        "score": "2-0",
        "probability": 0.1192
      },
      {
        "score": "1-1",
        "probability": 0.0995
      },
      {
        "score": "2-1",
        "probability": 0.0977
      },
      {
        "score": "3-0",
        "probability": 0.0785
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.0616,
      "0-1": 0.0495,
      "0-2": 0.0205,
      "0-3": 0.0056,
      "0-4": 0.0012,
      "1-0": 0.1201,
      "1-1": 0.0995,
      "1-2": 0.0406,
      "1-3": 0.0111,
      "1-4": 0.0023,
      "2-0": 0.1192,
      "2-1": 0.0977,
      "2-2": 0.0401,
      "2-3": 0.011,
      "2-4": 0.0022,
      "3-0": 0.0785,
      "3-1": 0.0644,
      "3-2": 0.0264,
      "3-3": 0.0072,
      "3-4": 0.0015,
      "4-0": 0.0388,
      "4-1": 0.0318,
      "4-2": 0.013,
      "4-3": 0.0036,
      "4-4": 0.0007,
      "5-0": 0.0153,
      "5-1": 0.0126,
      "5-2": 0.0052,
      "5-3": 0.0014,
      "6-0": 0.005,
      "6-1": 0.0041,
      "6-2": 0.0017,
      "7-0": 0.0014,
      "7-1": 0.0012
    },
    "outcome": {
      "home_win": 0.6439,
      "draw": 0.2092,
      "away_win": 0.1469
    },
    "markets": {
      "over_2_5_goals": 0.5296,
      "under_2_5_goals": 0.4704,
      "btts_yes": 0.4826,
      "btts_no": 0.5174,
      "home_clean_sheet": 0.4404,
      "away_clean_sheet": 0.1386
    },
    "home_ratings": {
      "DR": 6.96,
      "MCR": 7.08,
      "ATR": 7.24,
      "GK": 7.07
    },
    "away_ratings": {
      "DR": 6.69,
      "MCR": 6.75,
      "ATR": 6.84,
      "GK": 6.86
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Arsenal vs Hull. Most likely scoreline: 1-0. Lambdas derived from 4 home and 7 away individual player duels. Head-to-head: Arsenal 8W-2D-0L vs Hull over 10 meetings.",
      "key_player": "Projected scorer(s): Bukayo Saka",
      "tactical_analysis": "Tactical parity between 4-2-3-1 and 5-4-1. Match outcome driven primarily by individual player quality. Home midfield dominates with ~53% possession expected (Declan Rice vs Tim Iroegbunam). Total antagonist xG — Home: 0.87, Away: 0.45. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle."
    },
    "confidence": 0.72,
    "home_lambda": 1.976,
    "away_lambda": 0.82,
    "h2h": {
      "available": true,
      "meetings": 10,
      "home_wins": 8,
      "away_wins": 0,
      "draws": 2,
      "home_multiplier": 1.05,
      "away_multiplier": 0.95
    },
    "modal_scoreline": "1-0",
    "modal_scoreline_probability": 0.1201,
    "headline_policy": null
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.6439,
      "draw": 0.2092,
      "away_win": 0.1469
    },
    "favorite": "Arsenal",
    "favorite_win_probability": 0.6439,
    "fair_spread": 1.156,
    "fair_total": 2.796,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Arsenal",
        "estimate": 1.976,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Hull",
        "estimate": 0.82,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.5296,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.4826,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Arsenal",
        "estimate": 1.0,
        "probability": 0.4404,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Hull",
        "estimate": 1.0,
        "probability": 0.1386,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Bukayo Saka (Arsenal)",
        "estimate": 0.5099,
        "probability": 0.3994,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Oliver McBurnie (Hull)",
        "estimate": 0.2495,
        "probability": 0.2208,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Declan Rice (Arsenal)",
        "estimate": 0.265,
        "probability": 0.2328,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Regan Slater (Hull)",
        "estimate": 0.0934,
        "probability": 0.0892,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "balanced",
      "expected_total_goals": 2.796,
      "expected_total_shots": 23,
      "expected_total_passes": 854,
      "expected_pressing_actions_per_90": 15.0,
      "possession_home_pct": 53.3,
      "possession_away_pct": 46.7,
      "notes": "Arsenal projects to control midfield possession"
    },
    "expected_game_script": {
      "favorite": "Arsenal",
      "favorite_win_probability": 0.6439,
      "script": "Arsenal is the fair winner side, but the baseline remains favorite-led: fair spread +1.16 goals and fair total 2.80.",
      "first_half": "Expect balanced tempo while both sides test the matchup thesis; shot baseline is about 12 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; Hull must keep the match inside one goal.",
      "late_game": "A Arsenal lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Arsenal chance creation leans on Bukayo Saka against John Egan, Semi Ajayi in Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle; Arsenal projects to control midfield possession.",
    "expected_rotation_usage_behavior": [
      "Arsenal: starters carry the main goal usage through Bukayo Saka; bench watchlist: Martín Zubimendi, Max Dowman, Viktor Gyökeres.",
      "Hull: starters carry the main goal usage through the highest xG attackers; bench watchlist: Christos Mouzakitis, Robinio Vaz, Mohamed Belloumi.",
      "Assist usage should flow through Declan Rice; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Arsenal tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects balanced tempo, about 12 total first-half shots, and 1.40 first-half xG pace.",
      "45-70: If the match is level, watch midfield control and the listed bench watchlists for usage changes.",
      "70-90: If Hull is chasing, transition and set-piece volume become the primary live deviation signal; a draw state keeps set pieces and transition chances live."
    ],
    "invalidation_triggers": [
      "Early red card, injury, or goalkeeper change for Arsenal.",
      "Hull wins the midfield/territory battle beyond the possession baseline.",
      "Pace collapses: first 25 minutes fall well below the shot and box-entry baseline.",
      "Set pieces, penalties, or second balls create more danger than the open-play matchup thesis."
    ],
    "top_3_risk_factors": [
      {
        "factor": "Low-event scoring variance",
        "impact": "One penalty, deflection, or missed big chance can overwhelm the fair win probability."
      },
      {
        "factor": "Late lineup or role change",
        "impact": "A pregame XI, injury, or tactical role shift can invalidate player prop and usage estimates."
      },
      {
        "factor": "Discipline and set-piece volatility",
        "impact": "Cards, fouls in dangerous zones, and corner volume can change the expected game script quickly."
      }
    ]
  },
  "teams": {
    "Arsenal": {
      "formation": "4-2-3-1",
      "players": {
        "David Raya": {
          "player_id": 581310,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 186,
          "market_value": 33000000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.0529,
            "rating": 7.0674,
            "minutes": 90,
            "total_pass": 29,
            "accurate_pass": 19,
            "total_long_balls": 15,
            "accurate_long_balls": 5,
            "touches": 42,
            "clearances": 1,
            "ball_recovery": 11,
            "high_claims": 1,
            "punches": 0.8599,
            "aerial_won": 1,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 1,
            "possession_lost": 11.0723,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 15,
            "gk_engine_opponent_lambda": 1.0616,
            "shots_faced": 7.8,
            "expected_saves": 1.91,
            "high_pressure_saves": 0.66,
            "opponent_faced": "Oliver McBurnie, Tim Iroegbunam",
            "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": 88.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363907.0,
              "match_date": "2026-11-01 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Liverpool",
              "away_team": "Arsenal",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Arsenal",
              "opponent": "Liverpool",
              "stats": {},
              "has_player_stats": false,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 22,
                "accurate_pass": 14,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 9,
                "saves": 3,
                "goals_prevented": 0.4811
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 14,
                "duels_won": 2,
                "ball_recovery": 14,
                "saves": 2,
                "goals_prevented": 0.1196
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 19,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 13,
                "saves": 4,
                "goals_prevented": 0.8304
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0036,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 31,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 14,
                "saves": 2,
                "goals_prevented": -0.9555
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 8.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 22,
                "clearances": 2,
                "aerial_won": 4,
                "duels_won": 4,
                "ball_recovery": 14,
                "saves": 2,
                "goals_prevented": 1.6574
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.007,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 21,
                "clearances": 2,
                "ball_recovery": 11,
                "saves": 4,
                "goals_prevented": -0.651
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0048,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 23,
                "clearances": 1,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 14,
                "clearances": 1,
                "ball_recovery": 8,
                "saves": 1,
                "goals_prevented": 0.0369
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0074,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 12,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 70,
            "combined_rank_score": 82.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 130.0,
            "sofascore_rating": 7.3714,
            "sofascore_appearances": 14.0,
            "fifa_rank": 34.0,
            "fifa_overall": 88.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0674,
            "source_file": "data/player_rankings.csv",
            "player_name": "David Raya",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Cucurella",
                  "ranking": 65
                },
                {
                  "player_name": "Julián Alvarez",
                  "ranking": 66
                },
                {
                  "player_name": "Jamshid Iskandarov",
                  "ranking": 67
                },
                {
                  "player_name": "Emiliano Martínez",
                  "ranking": 68
                },
                {
                  "player_name": "Cole Palmer",
                  "ranking": 69
                }
              ],
              "lower": [
                {
                  "player_name": "Granit Xhaka",
                  "ranking": 71
                },
                {
                  "player_name": "Kevin De Bruyne",
                  "ranking": 72
                },
                {
                  "player_name": "Silva Denisson",
                  "ranking": 73
                },
                {
                  "player_name": "Désiré Doué",
                  "ranking": 74
                },
                {
                  "player_name": "Chema Andrés",
                  "ranking": 75
                }
              ]
            }
          },
          "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": 1.007,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "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, Arsenal, 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.9085,
                "goals_prevented": -0.0525,
                "rating": 7.0674,
                "minutes": 90.0,
                "total_pass": 28.9845,
                "accurate_pass": 18.4187,
                "total_long_balls": 15.1907,
                "accurate_long_balls": 5.0454,
                "touches": 42.0648,
                "clearances": 1.0039,
                "ball_recovery": 10.7271,
                "high_claims": 1.3937,
                "punches": 0.8539,
                "aerial_won": 0.6906,
                "sweeper_actions": 0.9148,
                "sweeper_accurate": 0.9148,
                "saves_inside_box": 1.347,
                "possession_lost": 10.9953,
                "duels_won": 1.2959,
                "duels_lost": 0.0111,
                "total_contest": 0.0016,
                "won_contest": 0.0016,
                "fouls": 0.0,
                "fouls_drawn": 0.7056,
                "total_own_half_passes": 15.7079,
                "accurate_own_half_passes": 14.4428
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-11-03T11:03:54.268655+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 201,
                    "rows": 7418
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 8.9
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "accurateOwnHalfPasses": 14.4428,
                  "accurateLongBalls": 5.0454,
                  "possessionLostCtrl": 10.9953,
                  "goalkeeperValueNormalized": 0.1998,
                  "sweeper_accuracy": 0.5494,
                  "accurateKeeperSweeper": 0.9148
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.908496141433716,
                    "model_output": 2.9085,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "save_contribution",
                        "importance": 0.0391
                      },
                      {
                        "name": "goalsPrevented",
                        "importance": 0.0375
                      },
                      {
                        "name": "savedShotsFromInsideTheBox",
                        "importance": 0.0373
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.0364
                      },
                      {
                        "name": "rating",
                        "importance": 0.0359
                      }
                    ],
                    "decomposition": {
                      "base": 2.922,
                      "items": [
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "contribution": -0.0521
                        },
                        {
                          "name": "commanding_index",
                          "contribution": 0.0286
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0267
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0227
                        },
                        {
                          "name": "goodHighClaim",
                          "contribution": -0.0212
                        }
                      ],
                      "others": -0.0182,
                      "total": 2.9085,
                      "log_link": true,
                      "margin_base": 1.072276,
                      "item_margins": [
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "margin": -0.017999
                        },
                        {
                          "name": "commanding_index",
                          "margin": 0.009913
                        },
                        {
                          "name": "rating",
                          "margin": 0.009155
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.007714
                        },
                        {
                          "name": "goodHighClaim",
                          "margin": -0.007206
                        }
                      ],
                      "others_margin": -0.006217
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.052543554455041885,
                    "model_output": -0.0525,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0381
                      },
                      {
                        "name": "totalOwnHalfPasses",
                        "importance": 0.0373
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0364
                      },
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0359
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0355
                      }
                    ],
                    "decomposition": {
                      "base": -0.0283,
                      "items": [
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.0165
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": 0.0147
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.0122
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "contribution": 0.0099
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.0107,
                      "total": -0.0525,
                      "log_link": false,
                      "margin_base": -0.028288,
                      "item_margins": [
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": -0.016522
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": 0.014688
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": -0.012156
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "margin": 0.009922
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.009434
                        }
                      ],
                      "others_margin": -0.010754
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.067388534545898,
                    "model_output": 7.0674,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0399
                      },
                      {
                        "name": "accurateKeeperSweeper",
                        "importance": 0.0395
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0383
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0383
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0363
                      }
                    ],
                    "decomposition": {
                      "base": 6.9871,
                      "items": [
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0671
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0252
                        },
                        {
                          "name": "totalKeeperSweeper",
                          "contribution": 0.0238
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": 0.0185
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.0162
                        }
                      ],
                      "others": -0.0705,
                      "total": 7.0674,
                      "log_link": false,
                      "margin_base": 6.987111,
                      "item_margins": [
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.067117
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.025242
                        },
                        {
                          "name": "totalKeeperSweeper",
                          "margin": 0.023765
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": 0.01845
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": 0.016187
                        }
                      ],
                      "others_margin": -0.070482
                    }
                  }
                ],
                "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 1.0070, quality 0.739)",
              "stats": {
                "saves": 2.9289,
                "goals_prevented": -0.0529,
                "rating": 7.0674,
                "minutes": 90.0,
                "total_pass": 29.1874,
                "accurate_pass": 18.5476,
                "total_long_balls": 15.297,
                "accurate_long_balls": 5.0807,
                "touches": 42.3593,
                "clearances": 1.0109,
                "ball_recovery": 10.8022,
                "high_claims": 1.4035,
                "punches": 0.8599,
                "aerial_won": 0.6954,
                "sweeper_actions": 0.9212,
                "sweeper_accurate": 0.9212,
                "saves_inside_box": 1.3564,
                "possession_lost": 11.0723,
                "duels_won": 1.305,
                "duels_lost": 0.0112,
                "total_contest": 0.0016,
                "won_contest": 0.0016,
                "fouls": 0.0,
                "fouls_drawn": 0.7105,
                "total_own_half_passes": 15.8179,
                "accurate_own_half_passes": 14.5439
              },
              "params": {
                "market_value_eur": 33000000,
                "quality_factor": 0.7389,
                "boost_factor": 1.007,
                "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.9079,
                "goals_prevented": -0.0529,
                "rating": 7.0674,
                "minutes": 90.0,
                "total_pass": 29.1874,
                "accurate_pass": 18.5476,
                "total_long_balls": 15.297,
                "accurate_long_balls": 5.0807,
                "touches": 42.3593,
                "clearances": 1.0109,
                "ball_recovery": 10.8022,
                "high_claims": 1.4035,
                "punches": 0.8599,
                "aerial_won": 0.6954,
                "sweeper_actions": 0.9212,
                "sweeper_accurate": 0.9212,
                "saves_inside_box": 1.3564,
                "possession_lost": 11.0723,
                "duels_won": 1.305,
                "duels_lost": 0.0112,
                "total_contest": 0.0016,
                "won_contest": 0.0016,
                "fouls": 0.0,
                "fouls_drawn": 0.7043,
                "total_own_half_passes": 15.8179,
                "accurate_own_half_passes": 14.5439
              },
              "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": "Arsenal"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 2.9289,
                  "after": 2.9079
                },
                {
                  "stat": "wasFouled",
                  "before": 0.7105,
                  "after": 0.7043
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.9079,
                "goals_prevented": -0.0529,
                "rating": 7.0674,
                "minutes": 90.0,
                "total_pass": 29.1874,
                "accurate_pass": 18.5476,
                "total_long_balls": 15.297,
                "accurate_long_balls": 5.0807,
                "touches": 42.3593,
                "clearances": 1.0109,
                "ball_recovery": 10.8022,
                "high_claims": 1.4035,
                "punches": 0.8599,
                "aerial_won": 0.6954,
                "sweeper_actions": 0.9212,
                "sweeper_accurate": 0.9212,
                "saves_inside_box": 1.3564,
                "possession_lost": 11.0723,
                "duels_won": 1.305,
                "duels_lost": 0.0112,
                "total_contest": 0.0016,
                "won_contest": 0.0016,
                "fouls": 0.0,
                "fouls_drawn": 0.7043,
                "total_own_half_passes": 15.8179,
                "accurate_own_half_passes": 14.5439
              },
              "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.9079,
                "goals_prevented": -0.0529,
                "rating": 7.0674,
                "minutes": 90.0,
                "total_pass": 29.1874,
                "accurate_pass": 18.5476,
                "total_long_balls": 15.297,
                "accurate_long_balls": 5.0807,
                "touches": 42.3593,
                "clearances": 1.0109,
                "ball_recovery": 10.8022,
                "high_claims": 1.4035,
                "punches": 0.8599,
                "aerial_won": 0.6954,
                "sweeper_actions": 0.9212,
                "sweeper_accurate": 0.9212,
                "saves_inside_box": 1.3564,
                "possession_lost": 11.0723,
                "duels_won": 1.305,
                "duels_lost": 0.0112,
                "total_contest": 0.0016,
                "won_contest": 0.0016,
                "fouls": 0.0,
                "fouls_drawn": 0.7043,
                "total_own_half_passes": 15.8179,
                "accurate_own_half_passes": 14.5439,
                "gk_engine_opponent_lambda": 1.0616,
                "shots_faced": 10.1,
                "expected_saves": 2.47,
                "high_pressure_saves": 0.85,
                "opponent_faced": "Oliver McBurnie, Tim Iroegbunam",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Oliver McBurnie, Tim Iroegbunam",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.0616
                }
              }
            },
            {
              "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.9079,
                "goals_prevented": -0.0529,
                "rating": 7.0674,
                "minutes": 90.0,
                "total_pass": 29.1874,
                "accurate_pass": 18.5476,
                "total_long_balls": 15.297,
                "accurate_long_balls": 5.0807,
                "touches": 42.3593,
                "clearances": 1.0109,
                "ball_recovery": 10.8022,
                "high_claims": 1.4035,
                "punches": 0.8599,
                "aerial_won": 0.6954,
                "sweeper_actions": 0.9212,
                "sweeper_accurate": 0.9212,
                "saves_inside_box": 1.3564,
                "possession_lost": 11.0723,
                "duels_won": 1.305,
                "duels_lost": 0.0112,
                "total_contest": 0.0016,
                "won_contest": 0.0016,
                "fouls": 0.0,
                "fouls_drawn": 0.7043,
                "total_own_half_passes": 15.8179,
                "accurate_own_half_passes": 14.5439,
                "gk_engine_opponent_lambda": 1.0616,
                "shots_faced": 10.1,
                "expected_saves": 2.47,
                "high_pressure_saves": 0.85,
                "opponent_faced": "Oliver McBurnie, Tim Iroegbunam",
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "saves": 2.9079,
                "goals_prevented": -0.0529,
                "rating": 7.0674,
                "minutes": 90.0,
                "total_pass": 29.1874,
                "accurate_pass": 18.5476,
                "total_long_balls": 15.297,
                "accurate_long_balls": 5.0807,
                "touches": 42.3593,
                "clearances": 1.0109,
                "ball_recovery": 10.8022,
                "high_claims": 1.4035,
                "punches": 0.8599,
                "aerial_won": 0.6954,
                "sweeper_actions": 0.9212,
                "sweeper_accurate": 0.9212,
                "saves_inside_box": 1.3564,
                "possession_lost": 11.0723,
                "duels_won": 1.305,
                "duels_lost": 0.0112,
                "total_contest": 0.0016,
                "won_contest": 0.0016,
                "fouls": 0.0,
                "fouls_drawn": 0.7043,
                "total_own_half_passes": 15.8179,
                "accurate_own_half_passes": 14.5439,
                "gk_engine_opponent_lambda": 1.0616,
                "shots_faced": 7.8,
                "expected_saves": 1.91,
                "high_pressure_saves": 0.66,
                "opponent_faced": "Oliver McBurnie, Tim Iroegbunam",
                "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.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 10.1,
                  "after": 7.8
                },
                {
                  "stat": "expected_saves",
                  "before": 2.47,
                  "after": 1.91
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 0.85,
                  "after": 0.66
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 88.0)",
              "stats": {
                "saves": 2.9079,
                "goals_prevented": -0.0529,
                "rating": 7.0674,
                "minutes": 90.0,
                "total_pass": 29.1874,
                "accurate_pass": 18.5476,
                "total_long_balls": 15.297,
                "accurate_long_balls": 5.0807,
                "touches": 42.3593,
                "clearances": 1.0109,
                "ball_recovery": 10.8022,
                "high_claims": 1.4035,
                "punches": 0.8599,
                "aerial_won": 0.6954,
                "sweeper_actions": 0.9212,
                "sweeper_accurate": 0.9212,
                "saves_inside_box": 1.3564,
                "possession_lost": 11.0723,
                "duels_won": 1.305,
                "duels_lost": 0.0112,
                "total_contest": 0.0016,
                "won_contest": 0.0016,
                "fouls": 0.0,
                "fouls_drawn": 0.7043,
                "total_own_half_passes": 15.8179,
                "accurate_own_half_passes": 14.5439,
                "gk_engine_opponent_lambda": 1.0616,
                "shots_faced": 7.8,
                "expected_saves": 1.91,
                "high_pressure_saves": 0.66,
                "opponent_faced": "Oliver McBurnie, Tim Iroegbunam",
                "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": 88.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": 70,
                "fifa_rank": 34.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 88.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "saves": 2.9079,
                "goals_prevented": -0.0529,
                "rating": 7.0674,
                "minutes": 90.0,
                "total_pass": 29.1874,
                "accurate_pass": 18.5476,
                "total_long_balls": 15.297,
                "accurate_long_balls": 5.0807,
                "touches": 42.3593,
                "clearances": 1.0109,
                "ball_recovery": 10.8022,
                "high_claims": 1.4035,
                "punches": 0.8599,
                "aerial_won": 0.6954,
                "sweeper_actions": 0.9212,
                "sweeper_accurate": 0.9212,
                "saves_inside_box": 1.3564,
                "possession_lost": 11.0723,
                "duels_won": 1.305,
                "duels_lost": 0.0112,
                "total_contest": 0.0016,
                "won_contest": 0.0016,
                "fouls": 0.0,
                "fouls_drawn": 0.7043,
                "total_own_half_passes": 15.8179,
                "accurate_own_half_passes": 14.5439,
                "gk_engine_opponent_lambda": 1.0616,
                "shots_faced": 7.8,
                "expected_saves": 1.91,
                "high_pressure_saves": 0.66,
                "opponent_faced": "Oliver McBurnie, Tim Iroegbunam",
                "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": 88.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.9079,
                "goals_prevented": -0.0529,
                "rating": 7.0674,
                "minutes": 90.0,
                "total_pass": 29.1874,
                "accurate_pass": 18.5476,
                "total_long_balls": 15.297,
                "accurate_long_balls": 5.0807,
                "touches": 42.3593,
                "clearances": 1.0109,
                "ball_recovery": 10.8022,
                "high_claims": 1.4035,
                "punches": 0.8599,
                "aerial_won": 0.6954,
                "sweeper_actions": 0.9212,
                "sweeper_accurate": 0.9212,
                "saves_inside_box": 1.3564,
                "possession_lost": 11.0723,
                "duels_won": 1.305,
                "duels_lost": 0.0112,
                "total_contest": 0.0016,
                "won_contest": 0.0016,
                "fouls": 0.0,
                "fouls_drawn": 0.7043,
                "total_own_half_passes": 15.8179,
                "accurate_own_half_passes": 14.5439,
                "gk_engine_opponent_lambda": 1.0616,
                "shots_faced": 7.8,
                "expected_saves": 1.91,
                "high_pressure_saves": 0.66,
                "opponent_faced": "Oliver McBurnie, Tim Iroegbunam",
                "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": 88.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "William Saliba": {
          "player_id": 941168,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 193,
          "market_value": 94000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 7.0175,
            "minutes": 90,
            "total_pass": 67,
            "accurate_pass": 62,
            "duels_won": 4,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 41,
            "accurate_own_half_passes": 39,
            "total_opp_half_passes": 26,
            "accurate_opp_half_passes": 23,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 78,
            "possession_lost": 5.7827,
            "dispossessed": 0.4651,
            "duels_lost": 4,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0493,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0343,
            "expected_assists": 0.0924,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0565,
            "ball_carries": 17,
            "total_progression": 61,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.2,
            "tackles_won_in_zone": 1.1,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 1.2,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Oliver McBurnie",
            "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.0337,
            "projected_assists": 0,
            "assist_probability": 0.0883,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 88.0
          },
          "latest_10_games": [
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0133,
                "total_shots": 0,
                "total_pass": 63,
                "accurate_pass": 58,
                "clearances": 7,
                "aerial_won": 6,
                "duels_won": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023942.0,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.164,
                "total_shots": 0,
                "total_pass": 80,
                "accurate_pass": 79,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931.0,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3129,
                "total_shots": 0,
                "total_pass": 75,
                "accurate_pass": 71,
                "key_pass": 2,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025045.0,
              "match_date": "2026-04-25",
              "home_team": "Arsenal",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0101,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 45,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025039.0,
              "match_date": "2026-04-19",
              "home_team": "Manchester City",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0161,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 41,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 6,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025021.0,
              "match_date": "2026-04-11",
              "home_team": "Arsenal",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0035,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 37,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023987.0,
              "match_date": "2026-03-14",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0877,
                "total_shots": 0,
                "total_pass": 110,
                "accurate_pass": 104,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 8,
                "aerial_won": 6,
                "duels_won": 10,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023971.0,
              "match_date": "2026-03-01",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2616,
                "expected_assists": 0.0033,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 47,
                "accurate_pass": 43,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024012.0,
              "match_date": "2026-02-22",
              "home_team": "Tottenham Hotspur",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2437,
                "expected_assists": 0.0136,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 72,
                "accurate_pass": 64,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025018.0,
              "match_date": "2026-02-18",
              "home_team": "Wolverhampton",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0094,
                "total_shots": 0,
                "total_pass": 66,
                "accurate_pass": 59,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 5,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 232,
            "combined_rank_score": 172.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 316.0,
            "sofascore_rating": 7.0233,
            "sofascore_appearances": 31.0,
            "fifa_rank": 28.0,
            "fifa_overall": 88.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0175,
            "source_file": "data/player_rankings.csv",
            "player_name": "William Saliba",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gabriel Magalhães",
                  "ranking": 227
                },
                {
                  "player_name": "Ikram Alibaev",
                  "ranking": 228
                },
                {
                  "player_name": "Roger Brugué",
                  "ranking": 229
                },
                {
                  "player_name": "Luis Sinisterra",
                  "ranking": 230
                },
                {
                  "player_name": "Min Junyeong",
                  "ranking": 231
                }
              ],
              "lower": [
                {
                  "player_name": "Elliot Anderson",
                  "ranking": 233
                },
                {
                  "player_name": "Nikolai Ivanov",
                  "ranking": 234
                },
                {
                  "player_name": "Francisco Trincão",
                  "ranking": 235
                },
                {
                  "player_name": "Alexander Isak",
                  "ranking": 236
                },
                {
                  "player_name": "Aleix García",
                  "ranking": 237
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 31,
          "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": 31,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0161,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 31 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.8929,
                "tackles": 1.2244,
                "tackles_won": 0.6625,
                "clearances": 5.0952,
                "aerial_won": 2.2439,
                "total_shots": 0.4024,
                "rating": 7.0175,
                "minutes": 89.7,
                "total_pass": 65.7621,
                "accurate_pass": 61.2524,
                "duels_won": 4.3414,
                "total_long_balls": 3.9177,
                "accurate_long_balls": 2.1551,
                "total_own_half_passes": 40.2729,
                "accurate_own_half_passes": 38.4572,
                "total_opp_half_passes": 25.4891,
                "accurate_opp_half_passes": 22.7951,
                "crosses_total": 0.1962,
                "crosses_accurate": 0.0678,
                "touches": 77.2538,
                "possession_lost": 5.6911,
                "dispossessed": 0.4577,
                "duels_lost": 3.4696,
                "aerial_lost": 1.8411,
                "total_contest": 0.3298,
                "won_contest": 0.2711,
                "ball_recovery": 3.4601,
                "challenges_lost": 0.2594,
                "fouls": 0.8526,
                "fouls_drawn": 0.4088,
                "blocks": 0.325,
                "goals": 0.0485,
                "goal_rate": 0.0485,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0254,
                "expected_assists": 0.0735,
                "shots_on_target": 0.0485,
                "big_chances_created": 0.0688,
                "xgot": 0.0418,
                "ball_carries": 17.0681,
                "total_progression": 59.9281,
                "progressive_carries": 0.4546,
                "key_pass": 0.4795,
                "shots_off_target": 0.3539
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.151,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1283,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1091,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0927,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0788,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.067,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-03-01",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0484,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-02-22",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-18",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.035,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.1849,
                  "aerialWon": 2.5428,
                  "totalClearance_p90": 5.2449,
                  "totalTackle": 1.114,
                  "totalTackle_p90": 1.114
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.892928421497345,
                    "model_output": 0.8929,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.1084
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1009
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0164
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0113
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0103
                        }
                      ],
                      "others": 0.0119,
                      "total": 0.8929,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.132882
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124213
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.018812
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.012751
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.011614
                        }
                      ],
                      "others_margin": 0.013441
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.2244313955307007,
                    "model_output": 1.2244,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1753
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0822
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0561
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0463
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0425
                        }
                      ],
                      "others": -0.2039,
                      "total": 1.2244,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118997
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.054031
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.038605
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.031968
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.029346
                        }
                      ],
                      "others_margin": -0.154009
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6625460386276245,
                    "model_output": 0.6625,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1056
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0427
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0399
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0317
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0278
                        }
                      ],
                      "others": -0.1492,
                      "total": 0.6625,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.117358
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.045834
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.04482
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.037081
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.033623
                        }
                      ],
                      "others_margin": -0.203053
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.095193862915039,
                    "model_output": 5.0952,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.587
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5455
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.3594
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2559
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1739
                        }
                      ],
                      "others": -0.2422,
                      "total": 5.0952,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.158597
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.127768
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.076049
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.050822
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.033126
                        }
                      ],
                      "others_margin": -0.046448
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.243892192840576,
                    "model_output": 2.2439,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.3917
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1985
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1323
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1308
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0548
                        }
                      ],
                      "others": -0.0339,
                      "total": 2.2439,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.251493
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.106764
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.065345
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.060626
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.024336
                        }
                      ],
                      "others_margin": -0.014947
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.40243735909461975,
                    "model_output": 0.4024,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1146
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0505
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0238
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0192
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0122
                        }
                      ],
                      "others": -0.0223,
                      "total": 0.4024,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.114624
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.050489
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.023813
                        },
                        {
                          "name": "rating",
                          "margin": 0.01917
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.012226
                        }
                      ],
                      "others_margin": -0.02226
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.017459392547607,
                    "model_output": 7.0175,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": 0.0639
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0625
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0424
                        },
                        {
                          "name": "rating",
                          "contribution": 0.034
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0193
                        }
                      ],
                      "others": -0.0034,
                      "total": 7.0175,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": 0.063947
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.062514
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.042368
                        },
                        {
                          "name": "rating",
                          "margin": 0.033968
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.019323
                        }
                      ],
                      "others_margin": -0.003443
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 31,
                  "role_matches": 30,
                  "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.0161, quality 0.891)",
              "stats": {
                "interceptions": 0.9073,
                "tackles": 1.2441,
                "tackles_won": 0.6732,
                "clearances": 5.1772,
                "aerial_won": 2.28,
                "total_shots": 0.4089,
                "rating": 7.0175,
                "minutes": 89.7,
                "total_pass": 66.8209,
                "accurate_pass": 62.2386,
                "duels_won": 4.4113,
                "total_long_balls": 3.9808,
                "accurate_long_balls": 2.1898,
                "total_own_half_passes": 40.9213,
                "accurate_own_half_passes": 39.0764,
                "total_opp_half_passes": 25.8995,
                "accurate_opp_half_passes": 23.1621,
                "crosses_total": 0.1994,
                "crosses_accurate": 0.0689,
                "touches": 78.4976,
                "possession_lost": 5.7827,
                "dispossessed": 0.4651,
                "duels_lost": 3.5255,
                "aerial_lost": 1.8707,
                "total_contest": 0.3351,
                "won_contest": 0.2755,
                "ball_recovery": 3.5158,
                "challenges_lost": 0.2636,
                "fouls": 0.8663,
                "fouls_drawn": 0.4154,
                "blocks": 0.3302,
                "goals": 0.0493,
                "goal_rate": 0.0493,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0258,
                "expected_assists": 0.0747,
                "shots_on_target": 0.0493,
                "big_chances_created": 0.0699,
                "xgot": 0.0425,
                "ball_carries": 17.3429,
                "total_progression": 60.8929,
                "progressive_carries": 0.4619,
                "key_pass": 0.4872,
                "shots_off_target": 0.3596
              },
              "params": {
                "market_value_eur": 94000000,
                "quality_factor": 0.891,
                "boost_factor": 1.0161,
                "reference_quality": 0.505,
                "history_matches": 31,
                "history_shrink": 0.1389,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9073,
                "tackles": 1.2441,
                "tackles_won": 0.6732,
                "clearances": 5.1772,
                "aerial_won": 2.28,
                "total_shots": 0.4089,
                "rating": 7.0175,
                "minutes": 89.7,
                "total_pass": 66.8209,
                "accurate_pass": 62.2386,
                "duels_won": 4.4113,
                "total_long_balls": 3.9808,
                "accurate_long_balls": 2.1898,
                "total_own_half_passes": 40.9213,
                "accurate_own_half_passes": 39.0764,
                "total_opp_half_passes": 25.8995,
                "accurate_opp_half_passes": 23.1621,
                "crosses_total": 0.1994,
                "crosses_accurate": 0.0689,
                "touches": 78.4976,
                "possession_lost": 5.7827,
                "dispossessed": 0.4651,
                "duels_lost": 3.5255,
                "aerial_lost": 1.8707,
                "total_contest": 0.3351,
                "won_contest": 0.2755,
                "ball_recovery": 3.5158,
                "challenges_lost": 0.2636,
                "fouls": 0.8663,
                "fouls_drawn": 0.4154,
                "blocks": 0.3302,
                "goals": 0.0493,
                "goal_rate": 0.0493,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0258,
                "expected_assists": 0.0747,
                "shots_on_target": 0.0493,
                "big_chances_created": 0.0699,
                "xgot": 0.0425,
                "ball_carries": 17.3429,
                "total_progression": 60.8929,
                "progressive_carries": 0.4619,
                "key_pass": 0.4872,
                "shots_off_target": 0.3596
              },
              "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.9073,
                "tackles": 1.2441,
                "tackles_won": 0.6732,
                "clearances": 5.1772,
                "aerial_won": 2.28,
                "total_shots": 0.4089,
                "rating": 7.0175,
                "minutes": 89.7,
                "total_pass": 66.8209,
                "accurate_pass": 62.2386,
                "duels_won": 4.4113,
                "total_long_balls": 3.9808,
                "accurate_long_balls": 2.1898,
                "total_own_half_passes": 40.9213,
                "accurate_own_half_passes": 39.0764,
                "total_opp_half_passes": 25.8995,
                "accurate_opp_half_passes": 23.1621,
                "crosses_total": 0.1994,
                "crosses_accurate": 0.0689,
                "touches": 78.4976,
                "possession_lost": 5.7827,
                "dispossessed": 0.4651,
                "duels_lost": 3.5255,
                "aerial_lost": 1.8707,
                "total_contest": 0.3351,
                "won_contest": 0.2755,
                "ball_recovery": 3.5158,
                "challenges_lost": 0.2636,
                "fouls": 0.8663,
                "fouls_drawn": 0.4154,
                "blocks": 0.3302,
                "goals": 0.0493,
                "goal_rate": 0.0493,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0258,
                "expected_assists": 0.0747,
                "shots_on_target": 0.0493,
                "big_chances_created": 0.0699,
                "xgot": 0.0425,
                "ball_carries": 17.3429,
                "total_progression": 60.8929,
                "progressive_carries": 0.4619,
                "key_pass": 0.4872,
                "shots_off_target": 0.3596,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "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": "Oliver McBurnie",
                  "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.9073,
                "tackles": 1.2441,
                "tackles_won": 0.6732,
                "clearances": 5.1772,
                "aerial_won": 2.28,
                "total_shots": 0.4089,
                "rating": 7.0175,
                "minutes": 89.7,
                "total_pass": 66.8209,
                "accurate_pass": 62.2386,
                "duels_won": 4.4113,
                "total_long_balls": 3.9808,
                "accurate_long_balls": 2.1898,
                "total_own_half_passes": 40.9213,
                "accurate_own_half_passes": 39.0764,
                "total_opp_half_passes": 25.8995,
                "accurate_opp_half_passes": 23.1621,
                "crosses_total": 0.1994,
                "crosses_accurate": 0.0689,
                "touches": 78.4976,
                "possession_lost": 5.7827,
                "dispossessed": 0.4651,
                "duels_lost": 3.5255,
                "aerial_lost": 1.8707,
                "total_contest": 0.3351,
                "won_contest": 0.2755,
                "ball_recovery": 3.5158,
                "challenges_lost": 0.2636,
                "fouls": 0.8663,
                "fouls_drawn": 0.4154,
                "blocks": 0.3302,
                "goal_rate": 0.0493,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0258,
                "expected_assists": 0.0747,
                "shots_on_target": 0.0493,
                "big_chances_created": 0.0699,
                "xgot": 0.0425,
                "ball_carries": 17.3429,
                "total_progression": 60.8929,
                "progressive_carries": 0.4619,
                "key_pass": 0.4872,
                "shots_off_target": 0.3596,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "interceptions": 0.9073,
                "tackles": 1.2441,
                "tackles_won": 0.6732,
                "clearances": 5.1772,
                "aerial_won": 2.28,
                "total_shots": 0.4089,
                "rating": 7.0175,
                "minutes": 89.7,
                "total_pass": 66.8209,
                "accurate_pass": 62.2386,
                "duels_won": 4.4113,
                "total_long_balls": 3.9808,
                "accurate_long_balls": 2.1898,
                "total_own_half_passes": 40.9213,
                "accurate_own_half_passes": 39.0764,
                "total_opp_half_passes": 25.8995,
                "accurate_opp_half_passes": 23.1621,
                "crosses_total": 0.1994,
                "crosses_accurate": 0.0689,
                "touches": 78.4976,
                "possession_lost": 5.7827,
                "dispossessed": 0.4651,
                "duels_lost": 3.5255,
                "aerial_lost": 1.8707,
                "total_contest": 0.3351,
                "won_contest": 0.2755,
                "ball_recovery": 3.5158,
                "challenges_lost": 0.2636,
                "fouls": 0.8663,
                "fouls_drawn": 0.4154,
                "blocks": 0.3302,
                "goal_rate": 0.0493,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0343,
                "expected_assists": 0.0924,
                "shots_on_target": 0.0493,
                "big_chances_created": 0.0699,
                "xgot": 0.0565,
                "ball_carries": 17.3429,
                "total_progression": 60.8929,
                "progressive_carries": 0.4619,
                "key_pass": 0.4872,
                "shots_off_target": 0.3596,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0258,
                  "after": 0.0343
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0747,
                  "after": 0.0924
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 88.0)",
              "stats": {
                "interceptions": 0.9073,
                "tackles": 1.2441,
                "tackles_won": 0.6732,
                "clearances": 5.1772,
                "aerial_won": 2.28,
                "total_shots": 0.4089,
                "rating": 7.0175,
                "minutes": 89.7,
                "total_pass": 66.8209,
                "accurate_pass": 62.2386,
                "duels_won": 4.4113,
                "total_long_balls": 3.9808,
                "accurate_long_balls": 2.1898,
                "total_own_half_passes": 40.9213,
                "accurate_own_half_passes": 39.0764,
                "total_opp_half_passes": 25.8995,
                "accurate_opp_half_passes": 23.1621,
                "crosses_total": 0.1994,
                "crosses_accurate": 0.0689,
                "touches": 78.4976,
                "possession_lost": 5.7827,
                "dispossessed": 0.4651,
                "duels_lost": 3.5255,
                "aerial_lost": 1.8707,
                "total_contest": 0.3351,
                "won_contest": 0.2755,
                "ball_recovery": 3.5158,
                "challenges_lost": 0.2636,
                "fouls": 0.8663,
                "fouls_drawn": 0.4154,
                "blocks": 0.3302,
                "goal_rate": 0.0493,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0343,
                "expected_assists": 0.0924,
                "shots_on_target": 0.0493,
                "big_chances_created": 0.0699,
                "xgot": 0.0565,
                "ball_carries": 17.3429,
                "total_progression": 60.8929,
                "progressive_carries": 0.4619,
                "key_pass": 0.4872,
                "shots_off_target": 0.3596,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 88.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": 232,
                "fifa_rank": 28.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 88.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.9073,
                "tackles": 1.2441,
                "tackles_won": 0.6732,
                "clearances": 5.1772,
                "aerial_won": 2.28,
                "total_shots": 0.4089,
                "rating": 7.0175,
                "minutes": 89.7,
                "total_pass": 66.8209,
                "accurate_pass": 62.2386,
                "duels_won": 4.4113,
                "total_long_balls": 3.9808,
                "accurate_long_balls": 2.1898,
                "total_own_half_passes": 40.9213,
                "accurate_own_half_passes": 39.0764,
                "total_opp_half_passes": 25.8995,
                "accurate_opp_half_passes": 23.1621,
                "crosses_total": 0.1994,
                "crosses_accurate": 0.0689,
                "touches": 78.4976,
                "possession_lost": 5.7827,
                "dispossessed": 0.4651,
                "duels_lost": 3.5255,
                "aerial_lost": 1.8707,
                "total_contest": 0.3351,
                "won_contest": 0.2755,
                "ball_recovery": 3.5158,
                "challenges_lost": 0.2636,
                "fouls": 0.8663,
                "fouls_drawn": 0.4154,
                "blocks": 0.3302,
                "goal_rate": 0.0493,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0343,
                "expected_assists": 0.0924,
                "shots_on_target": 0.0493,
                "big_chances_created": 0.0699,
                "xgot": 0.0565,
                "ball_carries": 17.3429,
                "total_progression": 60.8929,
                "progressive_carries": 0.4619,
                "key_pass": 0.4872,
                "shots_off_target": 0.3596,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "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.0337,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 88.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0337,
                "goal_rate": 0.0493,
                "scorer_weight": 0.0429,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0206,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.9073,
                "tackles": 1.2441,
                "tackles_won": 0.6732,
                "clearances": 5.1772,
                "aerial_won": 2.28,
                "total_shots": 0.4089,
                "rating": 7.0175,
                "minutes": 89.7,
                "total_pass": 66.8209,
                "accurate_pass": 62.2386,
                "duels_won": 4.4113,
                "total_long_balls": 3.9808,
                "accurate_long_balls": 2.1898,
                "total_own_half_passes": 40.9213,
                "accurate_own_half_passes": 39.0764,
                "total_opp_half_passes": 25.8995,
                "accurate_opp_half_passes": 23.1621,
                "crosses_total": 0.1994,
                "crosses_accurate": 0.0689,
                "touches": 78.4976,
                "possession_lost": 5.7827,
                "dispossessed": 0.4651,
                "duels_lost": 3.5255,
                "aerial_lost": 1.8707,
                "total_contest": 0.3351,
                "won_contest": 0.2755,
                "ball_recovery": 3.5158,
                "challenges_lost": 0.2636,
                "fouls": 0.8663,
                "fouls_drawn": 0.4154,
                "blocks": 0.3302,
                "goal_rate": 0.0493,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0343,
                "expected_assists": 0.0924,
                "shots_on_target": 0.0493,
                "big_chances_created": 0.0699,
                "xgot": 0.0565,
                "ball_carries": 17.3429,
                "total_progression": 60.8929,
                "progressive_carries": 0.4619,
                "key_pass": 0.4872,
                "shots_off_target": 0.3596,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "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.0337,
                "projected_assists": 0,
                "assist_probability": 0.0883,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 88.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0883,
                "assist_rate": 0.0,
                "provider_weight": 0.0739,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0473,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Ben White": {
          "player_id": 846036,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 4,
          "height": 186,
          "market_value": 32000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.8781,
            "minutes": 75,
            "total_pass": 41,
            "accurate_pass": 33,
            "duels_won": 4,
            "total_long_balls": 4,
            "accurate_long_balls": 1,
            "total_own_half_passes": 14,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 26,
            "accurate_opp_half_passes": 21,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 59,
            "possession_lost": 11.5707,
            "dispossessed": 0.2692,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.363,
            "assists": 0,
            "expected_goals": 0.0274,
            "expected_assists": 0.1458,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0086,
            "ball_carries": 9,
            "total_progression": 18,
            "progressive_carries": 0,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 2.2,
            "tackles_won_in_zone": 1.9,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.676,
            "opponent_faced": "Elliot Stroud",
            "pressing_zone": "Right Mid vs Left Back — Wide Channel",
            "matchup_zone": "Right Mid vs Left Back — Wide Channel",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.027,
            "projected_assists": 0,
            "assist_probability": 0.1357,
            "finishing_factor": 0.8,
            "creation_factor": 1.25,
            "fifa_overall": 86.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363907.0,
              "match_date": "2026-11-01 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Liverpool",
              "away_team": "Arsenal",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Arsenal",
              "opponent": "Liverpool",
              "stats": {},
              "has_player_stats": false,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.3606,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 48,
                "accurate_pass": 37,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 4,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 66,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0089,
                "total_shots": 0,
                "total_pass": 55,
                "accurate_pass": 48,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 63,
                "rating": 7.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1712,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 11,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0287,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 25,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0508,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.177,
                "expected_assists": 0.2095,
                "total_shots": 1,
                "total_pass": 78,
                "accurate_pass": 74,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023942.0,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 28,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0104,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 13
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931.0,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Fulham",
              "stats": {
                "minutes": 83,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1389,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 44,
                "key_pass": 1,
                "interceptions": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 109,
            "combined_rank_score": 94.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 108.0,
            "sofascore_rating": 7.45,
            "sofascore_appearances": 2.0,
            "fifa_rank": 80.0,
            "fifa_overall": 86.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8781,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ben White",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ramón Sosa",
                  "ranking": 104
                },
                {
                  "player_name": "Hakan Çalhanoğlu",
                  "ranking": 105
                },
                {
                  "player_name": "Paulo Dybala",
                  "ranking": 106
                },
                {
                  "player_name": "Eric García",
                  "ranking": 107
                },
                {
                  "player_name": "Gabriel Castellón",
                  "ranking": 108
                }
              ],
              "lower": [
                {
                  "player_name": "Federico Dimarco",
                  "ranking": 110
                },
                {
                  "player_name": "Jérémy Doku",
                  "ranking": 111
                },
                {
                  "player_name": "Bruno Lamas",
                  "ranking": 112
                },
                {
                  "player_name": "Jun-ho Son",
                  "ranking": 113
                },
                {
                  "player_name": "Luka Modrić",
                  "ranking": 114
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 19,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 19,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0142,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.5,
              "shots_per90": 0.5,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 19 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Arsenal, rel: 0.13, gls/90: 0.0, ast/90: 0.5)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.7966,
                "tackles": 1.6565,
                "tackles_won": 1.0394,
                "clearances": 2.4379,
                "aerial_won": 1.0704,
                "total_shots": 0.4437,
                "rating": 6.8781,
                "minutes": 75.29,
                "total_pass": 40.3082,
                "accurate_pass": 32.8306,
                "duels_won": 3.7124,
                "total_long_balls": 3.9548,
                "accurate_long_balls": 1.188,
                "total_own_half_passes": 14.287,
                "accurate_own_half_passes": 12.5649,
                "total_opp_half_passes": 26.0211,
                "accurate_opp_half_passes": 20.2656,
                "crosses_total": 1.722,
                "crosses_accurate": 0.3796,
                "touches": 58.2693,
                "possession_lost": 11.4087,
                "dispossessed": 0.2654,
                "duels_lost": 1.5761,
                "aerial_lost": 0.5165,
                "total_contest": 0.4482,
                "won_contest": 0.2221,
                "ball_recovery": 2.7727,
                "challenges_lost": 0.4078,
                "fouls": 0.2598,
                "fouls_drawn": 0.9077,
                "blocks": 0.2566,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.3569,
                "assist_rate": 0.3569,
                "expected_goals": 0.0203,
                "expected_assists": 0.1162,
                "shots_on_target": 0.0196,
                "big_chances_created": 0.3647,
                "xgot": 0.0064,
                "ball_carries": 8.4929,
                "total_progression": 17.6539,
                "progressive_carries": 0.318,
                "key_pass": 0.9675,
                "shots_off_target": 0.4241
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1572,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1336,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1136,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0965,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.082,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0697,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0593,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 28.0,
                    "is_starting": true,
                    "weight": 0.0504,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0428,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0364,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 19.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.8356,
                  "aerialWon": 1.1837,
                  "totalClearance_p90": 2.3006,
                  "totalTackle": 1.1893,
                  "totalTackle_p90": 1.5831
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.7966362833976746,
                    "model_output": 0.7966,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1054
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.1035
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0233
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0195
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0182
                        }
                      ],
                      "others": -0.0154,
                      "total": 0.7966,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114206
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.112035
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.027017
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.023222
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.022152
                        }
                      ],
                      "others_margin": -0.019167
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.6565272808074951,
                    "model_output": 1.6565,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1965
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0762
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0654
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0544
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0555
                        }
                      ],
                      "others": -0.0266,
                      "total": 1.6565,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.132479
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.04928
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.042465
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.034021
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.033524
                        }
                      ],
                      "others_margin": -0.015988
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.0393809080123901,
                    "model_output": 1.0394,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1154
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.052
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0389
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0385
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.038
                        }
                      ],
                      "others": 0.0124,
                      "total": 1.0394,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127512
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.055467
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.04179
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.039727
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.037681
                        }
                      ],
                      "others_margin": 0.011997
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.437877655029297,
                    "model_output": 2.4379,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.5776
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3527
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.3162
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.269
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0687
                        }
                      ],
                      "others": -0.099,
                      "total": 2.4379,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.185234
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117132
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.104373
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.098241
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.026732
                        }
                      ],
                      "others_margin": -0.039808
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.070368766784668,
                    "model_output": 1.0704,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.166
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1653
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1402
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0908
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0579
                        }
                      ],
                      "others": -0.0111,
                      "total": 1.0704,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114378
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.113854
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.107947
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.076678
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.052138
                        }
                      ],
                      "others_margin": -0.010351
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4437481164932251,
                    "model_output": 0.4437,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1063
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0521
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0231
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0162
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.013
                        }
                      ],
                      "others": -0.0096,
                      "total": 0.4437,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.106263
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.052142
                        },
                        {
                          "name": "rating",
                          "margin": 0.023104
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.016169
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.012957
                        }
                      ],
                      "others_margin": -0.009694
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.878090858459473,
                    "model_output": 6.8781,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0346
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0313
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.017
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0168
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.015
                        }
                      ],
                      "others": -0.0014,
                      "total": 6.8781,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.034593
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.031334
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.016981
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.016822
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.015039
                        }
                      ],
                      "others_margin": -0.0015
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 19,
                  "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.0142, quality 0.732)",
              "stats": {
                "interceptions": 0.8079,
                "tackles": 1.68,
                "tackles_won": 1.0541,
                "clearances": 2.4725,
                "aerial_won": 1.0856,
                "total_shots": 0.45,
                "rating": 6.8781,
                "minutes": 75.29,
                "total_pass": 40.8806,
                "accurate_pass": 33.2968,
                "duels_won": 3.7651,
                "total_long_balls": 4.011,
                "accurate_long_balls": 1.2049,
                "total_own_half_passes": 14.4899,
                "accurate_own_half_passes": 12.7433,
                "total_opp_half_passes": 26.3906,
                "accurate_opp_half_passes": 20.5534,
                "crosses_total": 1.7465,
                "crosses_accurate": 0.385,
                "touches": 59.0967,
                "possession_lost": 11.5707,
                "dispossessed": 0.2692,
                "duels_lost": 1.5985,
                "aerial_lost": 0.5238,
                "total_contest": 0.4546,
                "won_contest": 0.2253,
                "ball_recovery": 2.8121,
                "challenges_lost": 0.4136,
                "fouls": 0.2635,
                "fouls_drawn": 0.9206,
                "blocks": 0.2602,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.362,
                "assist_rate": 0.362,
                "expected_goals": 0.0206,
                "expected_assists": 0.1179,
                "shots_on_target": 0.0199,
                "big_chances_created": 0.3699,
                "xgot": 0.0065,
                "ball_carries": 8.6135,
                "total_progression": 17.9046,
                "progressive_carries": 0.3225,
                "key_pass": 0.9812,
                "shots_off_target": 0.4301
              },
              "params": {
                "market_value_eur": 32000000,
                "quality_factor": 0.732,
                "boost_factor": 1.0142,
                "reference_quality": 0.505,
                "history_matches": 19,
                "history_shrink": 0.2083,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0181)",
              "stats": {
                "interceptions": 0.8084,
                "tackles": 1.68,
                "tackles_won": 1.0502,
                "clearances": 2.4725,
                "aerial_won": 1.0856,
                "total_shots": 0.4494,
                "rating": 6.8781,
                "minutes": 75.29,
                "total_pass": 40.8806,
                "accurate_pass": 33.2968,
                "duels_won": 3.7651,
                "total_long_balls": 4.011,
                "accurate_long_balls": 1.2049,
                "total_own_half_passes": 14.4899,
                "accurate_own_half_passes": 12.7433,
                "total_opp_half_passes": 26.3906,
                "accurate_opp_half_passes": 20.5534,
                "crosses_total": 1.7603,
                "crosses_accurate": 0.385,
                "touches": 59.0967,
                "possession_lost": 11.5707,
                "dispossessed": 0.2692,
                "duels_lost": 1.5985,
                "aerial_lost": 0.5238,
                "total_contest": 0.4546,
                "won_contest": 0.2253,
                "ball_recovery": 2.8121,
                "challenges_lost": 0.4136,
                "fouls": 0.2663,
                "fouls_drawn": 0.9115,
                "blocks": 0.2602,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.363,
                "assist_rate": 0.363,
                "expected_goals": 0.0206,
                "expected_assists": 0.1179,
                "shots_on_target": 0.0195,
                "big_chances_created": 0.3699,
                "xgot": 0.0065,
                "ball_carries": 8.6135,
                "total_progression": 17.9046,
                "progressive_carries": 0.3225,
                "key_pass": 0.9812,
                "shots_off_target": 0.4301
              },
              "params": {
                "blend_weight": 0.0181,
                "history_matches": 19,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8366,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Arsenal"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 1.7465,
                  "after": 1.7603
                },
                {
                  "stat": "wasFouled",
                  "before": 0.9206,
                  "after": 0.9115
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.8084,
                "tackles": 1.68,
                "tackles_won": 1.0502,
                "clearances": 2.4725,
                "aerial_won": 1.0856,
                "total_shots": 0.4496,
                "rating": 6.8781,
                "minutes": 75.29,
                "total_pass": 40.8806,
                "accurate_pass": 33.2968,
                "duels_won": 3.7651,
                "total_long_balls": 4.011,
                "accurate_long_balls": 1.2049,
                "total_own_half_passes": 14.4899,
                "accurate_own_half_passes": 12.7433,
                "total_opp_half_passes": 26.3906,
                "accurate_opp_half_passes": 20.5534,
                "crosses_total": 1.7603,
                "crosses_accurate": 0.385,
                "touches": 59.0967,
                "possession_lost": 11.5707,
                "dispossessed": 0.2692,
                "duels_lost": 1.5985,
                "aerial_lost": 0.5238,
                "total_contest": 0.4546,
                "won_contest": 0.2253,
                "ball_recovery": 2.8121,
                "challenges_lost": 0.4136,
                "fouls": 0.2663,
                "fouls_drawn": 0.9115,
                "blocks": 0.2602,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.363,
                "assist_rate": 0.363,
                "expected_goals": 0.0206,
                "expected_assists": 0.1179,
                "shots_on_target": 0.0195,
                "big_chances_created": 0.3699,
                "xgot": 0.0065,
                "ball_carries": 8.6135,
                "total_progression": 17.9046,
                "progressive_carries": 0.3225,
                "key_pass": 0.9812,
                "shots_off_target": 0.4301
              },
              "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.8084,
                "tackles": 1.68,
                "tackles_won": 1.0502,
                "clearances": 2.4725,
                "aerial_won": 1.0856,
                "total_shots": 0.4496,
                "rating": 6.8781,
                "minutes": 75.29,
                "total_pass": 40.8806,
                "accurate_pass": 33.2968,
                "duels_won": 3.7651,
                "total_long_balls": 4.011,
                "accurate_long_balls": 1.2049,
                "total_own_half_passes": 14.4899,
                "accurate_own_half_passes": 12.7433,
                "total_opp_half_passes": 26.3906,
                "accurate_opp_half_passes": 20.5534,
                "crosses_total": 1.7603,
                "crosses_accurate": 0.385,
                "touches": 59.0967,
                "possession_lost": 11.5707,
                "dispossessed": 0.2692,
                "duels_lost": 1.5985,
                "aerial_lost": 0.5238,
                "total_contest": 0.4546,
                "won_contest": 0.2253,
                "ball_recovery": 2.8121,
                "challenges_lost": 0.4136,
                "fouls": 0.2663,
                "fouls_drawn": 0.9115,
                "blocks": 0.2602,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.363,
                "assist_rate": 0.363,
                "expected_goals": 0.0206,
                "expected_assists": 0.1179,
                "shots_on_target": 0.0195,
                "big_chances_created": 0.3699,
                "xgot": 0.0065,
                "ball_carries": 8.6135,
                "total_progression": 17.9046,
                "progressive_carries": 0.3225,
                "key_pass": 0.9812,
                "shots_off_target": 0.4301,
                "tackles_in_zone": 2.2,
                "tackles_won_in_zone": 1.9,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.676,
                "opponent_faced": "Elliot Stroud",
                "pressing_zone": "Right Mid vs Left Back — Wide Channel",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Elliot Stroud",
                  "matchup_zone": "Right Mid vs Left Back — Wide Channel"
                }
              }
            },
            {
              "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.8084,
                "tackles": 1.68,
                "tackles_won": 1.0502,
                "clearances": 2.4725,
                "aerial_won": 1.0856,
                "total_shots": 0.4496,
                "rating": 6.8781,
                "minutes": 75.29,
                "total_pass": 40.8806,
                "accurate_pass": 33.2968,
                "duels_won": 3.7651,
                "total_long_balls": 4.011,
                "accurate_long_balls": 1.2049,
                "total_own_half_passes": 14.4899,
                "accurate_own_half_passes": 12.7433,
                "total_opp_half_passes": 26.3906,
                "accurate_opp_half_passes": 20.5534,
                "crosses_total": 1.7603,
                "crosses_accurate": 0.385,
                "touches": 59.0967,
                "possession_lost": 11.5707,
                "dispossessed": 0.2692,
                "duels_lost": 1.5985,
                "aerial_lost": 0.5238,
                "total_contest": 0.4546,
                "won_contest": 0.2253,
                "ball_recovery": 2.8121,
                "challenges_lost": 0.4136,
                "fouls": 0.2663,
                "fouls_drawn": 0.9115,
                "blocks": 0.2602,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.363,
                "assists": 0,
                "expected_goals": 0.0206,
                "expected_assists": 0.1179,
                "shots_on_target": 0.0195,
                "big_chances_created": 0.3699,
                "xgot": 0.0065,
                "ball_carries": 8.6135,
                "total_progression": 17.9046,
                "progressive_carries": 0.3225,
                "key_pass": 0.9812,
                "shots_off_target": 0.4301,
                "tackles_in_zone": 2.2,
                "tackles_won_in_zone": 1.9,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.676,
                "opponent_faced": "Elliot Stroud",
                "pressing_zone": "Right Mid vs Left Back — Wide Channel",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "interceptions": 0.8084,
                "tackles": 1.68,
                "tackles_won": 1.0502,
                "clearances": 2.4725,
                "aerial_won": 1.0856,
                "total_shots": 0.4496,
                "rating": 6.8781,
                "minutes": 75.29,
                "total_pass": 40.8806,
                "accurate_pass": 33.2968,
                "duels_won": 3.7651,
                "total_long_balls": 4.011,
                "accurate_long_balls": 1.2049,
                "total_own_half_passes": 14.4899,
                "accurate_own_half_passes": 12.7433,
                "total_opp_half_passes": 26.3906,
                "accurate_opp_half_passes": 20.5534,
                "crosses_total": 1.7603,
                "crosses_accurate": 0.385,
                "touches": 59.0967,
                "possession_lost": 11.5707,
                "dispossessed": 0.2692,
                "duels_lost": 1.5985,
                "aerial_lost": 0.5238,
                "total_contest": 0.4546,
                "won_contest": 0.2253,
                "ball_recovery": 2.8121,
                "challenges_lost": 0.4136,
                "fouls": 0.2663,
                "fouls_drawn": 0.9115,
                "blocks": 0.2602,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.363,
                "assists": 0,
                "expected_goals": 0.0274,
                "expected_assists": 0.1458,
                "shots_on_target": 0.0195,
                "big_chances_created": 0.3699,
                "xgot": 0.0086,
                "ball_carries": 8.6135,
                "total_progression": 17.9046,
                "progressive_carries": 0.3225,
                "key_pass": 0.9812,
                "shots_off_target": 0.4301,
                "tackles_in_zone": 2.2,
                "tackles_won_in_zone": 1.9,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.676,
                "opponent_faced": "Elliot Stroud",
                "pressing_zone": "Right Mid vs Left Back — Wide Channel",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0206,
                  "after": 0.0274
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1179,
                  "after": 0.1458
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 86.0)",
              "stats": {
                "interceptions": 0.8084,
                "tackles": 1.68,
                "tackles_won": 1.0502,
                "clearances": 2.4725,
                "aerial_won": 1.0856,
                "total_shots": 0.4496,
                "rating": 6.8781,
                "minutes": 75.29,
                "total_pass": 40.8806,
                "accurate_pass": 33.2968,
                "duels_won": 3.7651,
                "total_long_balls": 4.011,
                "accurate_long_balls": 1.2049,
                "total_own_half_passes": 14.4899,
                "accurate_own_half_passes": 12.7433,
                "total_opp_half_passes": 26.3906,
                "accurate_opp_half_passes": 20.5534,
                "crosses_total": 1.7603,
                "crosses_accurate": 0.385,
                "touches": 59.0967,
                "possession_lost": 11.5707,
                "dispossessed": 0.2692,
                "duels_lost": 1.5985,
                "aerial_lost": 0.5238,
                "total_contest": 0.4546,
                "won_contest": 0.2253,
                "ball_recovery": 2.8121,
                "challenges_lost": 0.4136,
                "fouls": 0.2663,
                "fouls_drawn": 0.9115,
                "blocks": 0.2602,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.363,
                "assists": 0,
                "expected_goals": 0.0274,
                "expected_assists": 0.1458,
                "shots_on_target": 0.0195,
                "big_chances_created": 0.3699,
                "xgot": 0.0086,
                "ball_carries": 8.6135,
                "total_progression": 17.9046,
                "progressive_carries": 0.3225,
                "key_pass": 0.9812,
                "shots_off_target": 0.4301,
                "tackles_in_zone": 2.2,
                "tackles_won_in_zone": 1.9,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.676,
                "opponent_faced": "Elliot Stroud",
                "pressing_zone": "Right Mid vs Left Back — Wide Channel",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 86.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 109,
                "fifa_rank": 80.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 86.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.8084,
                "tackles": 1.68,
                "tackles_won": 1.0502,
                "clearances": 2.4725,
                "aerial_won": 1.0856,
                "total_shots": 0.4496,
                "rating": 6.8781,
                "minutes": 75.29,
                "total_pass": 40.8806,
                "accurate_pass": 33.2968,
                "duels_won": 3.7651,
                "total_long_balls": 4.011,
                "accurate_long_balls": 1.2049,
                "total_own_half_passes": 14.4899,
                "accurate_own_half_passes": 12.7433,
                "total_opp_half_passes": 26.3906,
                "accurate_opp_half_passes": 20.5534,
                "crosses_total": 1.7603,
                "crosses_accurate": 0.385,
                "touches": 59.0967,
                "possession_lost": 11.5707,
                "dispossessed": 0.2692,
                "duels_lost": 1.5985,
                "aerial_lost": 0.5238,
                "total_contest": 0.4546,
                "won_contest": 0.2253,
                "ball_recovery": 2.8121,
                "challenges_lost": 0.4136,
                "fouls": 0.2663,
                "fouls_drawn": 0.9115,
                "blocks": 0.2602,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.363,
                "assists": 0,
                "expected_goals": 0.0274,
                "expected_assists": 0.1458,
                "shots_on_target": 0.0195,
                "big_chances_created": 0.3699,
                "xgot": 0.0086,
                "ball_carries": 8.6135,
                "total_progression": 17.9046,
                "progressive_carries": 0.3225,
                "key_pass": 0.9812,
                "shots_off_target": 0.4301,
                "tackles_in_zone": 2.2,
                "tackles_won_in_zone": 1.9,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.676,
                "opponent_faced": "Elliot Stroud",
                "pressing_zone": "Right Mid vs Left Back — Wide Channel",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.027,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.027,
                "goal_rate": 0.0,
                "scorer_weight": 0.0219,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0105,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.8084,
                "tackles": 1.68,
                "tackles_won": 1.0502,
                "clearances": 2.4725,
                "aerial_won": 1.0856,
                "total_shots": 0.4496,
                "rating": 6.8781,
                "minutes": 75.29,
                "total_pass": 40.8806,
                "accurate_pass": 33.2968,
                "duels_won": 3.7651,
                "total_long_balls": 4.011,
                "accurate_long_balls": 1.2049,
                "total_own_half_passes": 14.4899,
                "accurate_own_half_passes": 12.7433,
                "total_opp_half_passes": 26.3906,
                "accurate_opp_half_passes": 20.5534,
                "crosses_total": 1.7603,
                "crosses_accurate": 0.385,
                "touches": 59.0967,
                "possession_lost": 11.5707,
                "dispossessed": 0.2692,
                "duels_lost": 1.5985,
                "aerial_lost": 0.5238,
                "total_contest": 0.4546,
                "won_contest": 0.2253,
                "ball_recovery": 2.8121,
                "challenges_lost": 0.4136,
                "fouls": 0.2663,
                "fouls_drawn": 0.9115,
                "blocks": 0.2602,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.363,
                "assists": 0,
                "expected_goals": 0.0274,
                "expected_assists": 0.1458,
                "shots_on_target": 0.0195,
                "big_chances_created": 0.3699,
                "xgot": 0.0086,
                "ball_carries": 8.6135,
                "total_progression": 17.9046,
                "progressive_carries": 0.3225,
                "key_pass": 0.9812,
                "shots_off_target": 0.4301,
                "tackles_in_zone": 2.2,
                "tackles_won_in_zone": 1.9,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.676,
                "opponent_faced": "Elliot Stroud",
                "pressing_zone": "Right Mid vs Left Back — Wide Channel",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.027,
                "projected_assists": 0,
                "assist_probability": 0.1357,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1357,
                "assist_rate": 0.363,
                "provider_weight": 0.1823,
                "squad_weight_total": 1.5615,
                "weight_share": 0.1167,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Gabriel Magalhães": {
          "player_id": 869792,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 6,
          "height": 190,
          "market_value": 70000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 7.1317,
            "minutes": 90,
            "total_pass": 57,
            "accurate_pass": 50,
            "duels_won": 5,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 32,
            "accurate_own_half_passes": 30,
            "total_opp_half_passes": 25,
            "accurate_opp_half_passes": 21,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 73,
            "possession_lost": 7.9552,
            "dispossessed": 0.6365,
            "duels_lost": 4,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.1574,
            "goals": 0,
            "assist_rate": 0.0221,
            "assists": 0,
            "expected_goals": 0.2733,
            "expected_assists": 0.0452,
            "shots_on_target": 1,
            "big_chances_created": 0,
            "xgot": 0.355,
            "ball_carries": 17,
            "total_progression": 56,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.2,
            "tackles_won_in_zone": 1.1,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 1.2,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Oliver McBurnie",
            "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.2391,
            "projected_assists": 0,
            "assist_probability": 0.0442,
            "finishing_factor": 0.8111,
            "creation_factor": 0.8335,
            "fifa_overall": 88.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363907.0,
              "match_date": "2026-11-01 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Liverpool",
              "away_team": "Arsenal",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Arsenal",
              "opponent": "Liverpool",
              "stats": {},
              "has_player_stats": false,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 9.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5437,
                "expected_assists": 0.0201,
                "total_shots": 2,
                "shots_on_target": 2,
                "shots_off_target": 0,
                "total_pass": 53,
                "accurate_pass": 47,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 3,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4209,
                "expected_assists": 0.0154,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 73,
                "accurate_pass": 70,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 5,
                "duels_won": 9,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.012,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 47,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1421,
                "total_shots": 0,
                "total_pass": 64,
                "accurate_pass": 57,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0155,
                "expected_assists": 0.0075,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 44,
                "accurate_pass": 37,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 6,
                "aerial_won": 7,
                "duels_won": 10,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3141,
                "expected_assists": 0.0199,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 38,
                "accurate_pass": 32,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1266,
                "expected_assists": 0.0198,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 74,
                "accurate_pass": 68,
                "tackles": 2,
                "interceptions": 2,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0467,
                "expected_assists": 0.0093,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 57,
                "accurate_pass": 54,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 28,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 227,
            "combined_rank_score": 98.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 168.0,
            "sofascore_rating": 7.2656,
            "sofascore_appearances": 32.0,
            "fifa_rank": 28.0,
            "fifa_overall": 88.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.1317,
            "source_file": "data/player_rankings.csv",
            "player_name": "Gabriel Magalhães",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Rodrigo Garro",
                  "ranking": 222
                },
                {
                  "player_name": "Ylyas Chouaref",
                  "ranking": 223
                },
                {
                  "player_name": "Rodrigo Riquelme",
                  "ranking": 224
                },
                {
                  "player_name": "Luis Chávez",
                  "ranking": 225
                },
                {
                  "player_name": "Julio González",
                  "ranking": 226
                }
              ],
              "lower": [
                {
                  "player_name": "Ikram Alibaev",
                  "ranking": 228
                },
                {
                  "player_name": "Roger Brugué",
                  "ranking": 229
                },
                {
                  "player_name": "Luis Sinisterra",
                  "ranking": 230
                },
                {
                  "player_name": "Min Junyeong",
                  "ranking": 231
                },
                {
                  "player_name": "William Saliba",
                  "ranking": 232
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 40,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 40,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0122,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.0,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 40 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Arsenal, 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.1332,
                "tackles": 1.4051,
                "tackles_won": 0.8055,
                "clearances": 6.0219,
                "aerial_won": 2.3624,
                "total_shots": 0.9229,
                "rating": 7.1317,
                "minutes": 89.97,
                "total_pass": 56.3144,
                "accurate_pass": 49.8302,
                "duels_won": 5.2296,
                "total_long_balls": 5.1313,
                "accurate_long_balls": 1.8376,
                "total_own_half_passes": 31.9763,
                "accurate_own_half_passes": 29.3296,
                "total_opp_half_passes": 24.3381,
                "accurate_opp_half_passes": 20.5006,
                "crosses_total": 0.0848,
                "crosses_accurate": 0.0069,
                "touches": 72.0428,
                "possession_lost": 7.8593,
                "dispossessed": 0.6288,
                "duels_lost": 4.2309,
                "aerial_lost": 2.4154,
                "total_contest": 0.0577,
                "won_contest": 0.0573,
                "ball_recovery": 2.7949,
                "challenges_lost": 0.3808,
                "fouls": 0.8101,
                "fouls_drawn": 1.1882,
                "blocks": 1.167,
                "goals": 0.157,
                "goal_rate": 0.157,
                "assists": 0.022,
                "assist_rate": 0.022,
                "expected_goals": 0.2032,
                "expected_assists": 0.0361,
                "shots_on_target": 0.5201,
                "big_chances_created": 0.0237,
                "xgot": 0.264,
                "ball_carries": 17.249,
                "total_progression": 55.105,
                "progressive_carries": 0.5956,
                "key_pass": 0.2704,
                "shots_off_target": 0.4028
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 9.0
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.7501,
                  "aerialWon": 2.4423,
                  "totalClearance_p90": 5.961,
                  "totalTackle": 1.4608,
                  "totalTackle_p90": 1.4608
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1332485675811768,
                    "model_output": 1.1332,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1149
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0642
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.043
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0327
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0279
                        }
                      ],
                      "others": 0.0448,
                      "total": 1.1332,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.123866
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.063038
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.040105
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.030349
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.025963
                        }
                      ],
                      "others_margin": 0.040435
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.4051374197006226,
                    "model_output": 1.4051,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1678
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.053
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0361
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0287
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0247
                        }
                      ],
                      "others": -0.1137,
                      "total": 1.4051,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114139
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.03348
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.02273
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.018427
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.016155
                        }
                      ],
                      "others_margin": -0.077674
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8054776191711426,
                    "model_output": 0.8055,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.102
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0402
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0343
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0281
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0236
                        }
                      ],
                      "others": -0.0657,
                      "total": 0.8055,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.113528
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.043263
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.038397
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.032557
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.027461
                        }
                      ],
                      "others_margin": -0.078479
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.021852493286133,
                    "model_output": 6.0219,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.7945
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5723
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.3786
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.2746
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.2225
                        }
                      ],
                      "others": 0.3637,
                      "total": 6.0219,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.209136
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12746
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.076179
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.051839
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.040114
                        }
                      ],
                      "others_margin": 0.062284
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.3623642921447754,
                    "model_output": 2.3624,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.3879
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1881
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1617
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1675
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0988
                        }
                      ],
                      "others": -0.0113,
                      "total": 2.3624,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.249372
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.101696
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.079811
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.076484
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.04251
                        }
                      ],
                      "others_margin": -0.004804
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9229460954666138,
                    "model_output": 0.9229,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.2245
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0554
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.041
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0318
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.019
                        }
                      ],
                      "others": 0.07,
                      "total": 0.9229,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.224494
                        },
                        {
                          "name": "rating",
                          "margin": 0.05541
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.040998
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.031831
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.018984
                        }
                      ],
                      "others_margin": 0.06998
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.1317057609558105,
                    "model_output": 7.1317,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": 0.0691
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0626
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0497
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0427
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0217
                        }
                      ],
                      "others": 0.0871,
                      "total": 7.1317,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": 0.069136
                        },
                        {
                          "name": "rating",
                          "margin": 0.062568
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.049659
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.042694
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.021701
                        }
                      ],
                      "others_margin": 0.087167
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 40,
                  "role_matches": 38,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0122, quality 0.871)",
              "stats": {
                "interceptions": 1.1471,
                "tackles": 1.4223,
                "tackles_won": 0.8153,
                "clearances": 6.0953,
                "aerial_won": 2.3912,
                "total_shots": 0.9342,
                "rating": 7.1317,
                "minutes": 89.97,
                "total_pass": 57.0014,
                "accurate_pass": 50.4381,
                "duels_won": 5.2934,
                "total_long_balls": 5.1939,
                "accurate_long_balls": 1.86,
                "total_own_half_passes": 32.3664,
                "accurate_own_half_passes": 29.6874,
                "total_opp_half_passes": 24.635,
                "accurate_opp_half_passes": 20.7507,
                "crosses_total": 0.0858,
                "crosses_accurate": 0.007,
                "touches": 72.9217,
                "possession_lost": 7.9552,
                "dispossessed": 0.6365,
                "duels_lost": 4.2825,
                "aerial_lost": 2.4449,
                "total_contest": 0.0584,
                "won_contest": 0.058,
                "ball_recovery": 2.829,
                "challenges_lost": 0.3854,
                "fouls": 0.82,
                "fouls_drawn": 1.2027,
                "blocks": 1.1812,
                "goals": 0.1589,
                "goal_rate": 0.1589,
                "assists": 0.0223,
                "assist_rate": 0.0223,
                "expected_goals": 0.2057,
                "expected_assists": 0.0365,
                "shots_on_target": 0.5264,
                "big_chances_created": 0.024,
                "xgot": 0.2672,
                "ball_carries": 17.4594,
                "total_progression": 55.7773,
                "progressive_carries": 0.6029,
                "key_pass": 0.2737,
                "shots_off_target": 0.4077
              },
              "params": {
                "market_value_eur": 70000000,
                "quality_factor": 0.8707,
                "boost_factor": 1.0122,
                "reference_quality": 0.505,
                "history_matches": 40,
                "history_shrink": 0.1111,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0096)",
              "stats": {
                "interceptions": 1.1505,
                "tackles": 1.4223,
                "tackles_won": 0.8075,
                "clearances": 6.0953,
                "aerial_won": 2.3912,
                "total_shots": 0.9348,
                "rating": 7.1317,
                "minutes": 89.97,
                "total_pass": 57.0014,
                "accurate_pass": 50.4381,
                "duels_won": 5.2934,
                "total_long_balls": 5.1939,
                "accurate_long_balls": 1.86,
                "total_own_half_passes": 32.3664,
                "accurate_own_half_passes": 29.6874,
                "total_opp_half_passes": 24.635,
                "accurate_opp_half_passes": 20.7507,
                "crosses_total": 0.085,
                "crosses_accurate": 0.007,
                "touches": 72.9217,
                "possession_lost": 7.9552,
                "dispossessed": 0.6365,
                "duels_lost": 4.2825,
                "aerial_lost": 2.4449,
                "total_contest": 0.0584,
                "won_contest": 0.058,
                "ball_recovery": 2.829,
                "challenges_lost": 0.3854,
                "fouls": 0.8265,
                "fouls_drawn": 1.2007,
                "blocks": 1.1812,
                "goals": 0.1574,
                "goal_rate": 0.1574,
                "assists": 0.0221,
                "assist_rate": 0.0221,
                "expected_goals": 0.2057,
                "expected_assists": 0.0365,
                "shots_on_target": 0.5213,
                "big_chances_created": 0.024,
                "xgot": 0.2672,
                "ball_carries": 17.4594,
                "total_progression": 55.7773,
                "progressive_carries": 0.6029,
                "key_pass": 0.2737,
                "shots_off_target": 0.4077
              },
              "params": {
                "blend_weight": 0.0096,
                "history_matches": 40,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9997,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Arsenal"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.8153,
                  "after": 0.8075
                },
                {
                  "stat": "fouls",
                  "before": 0.82,
                  "after": 0.8265
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5264,
                  "after": 0.5213
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1505,
                "tackles": 1.4223,
                "tackles_won": 0.8075,
                "clearances": 6.0953,
                "aerial_won": 2.3912,
                "total_shots": 0.9348,
                "rating": 7.1317,
                "minutes": 89.97,
                "total_pass": 57.0014,
                "accurate_pass": 50.4381,
                "duels_won": 5.2934,
                "total_long_balls": 5.1939,
                "accurate_long_balls": 1.86,
                "total_own_half_passes": 32.3664,
                "accurate_own_half_passes": 29.6874,
                "total_opp_half_passes": 24.635,
                "accurate_opp_half_passes": 20.7507,
                "crosses_total": 0.085,
                "crosses_accurate": 0.007,
                "touches": 72.9217,
                "possession_lost": 7.9552,
                "dispossessed": 0.6365,
                "duels_lost": 4.2825,
                "aerial_lost": 2.4449,
                "total_contest": 0.0584,
                "won_contest": 0.058,
                "ball_recovery": 2.829,
                "challenges_lost": 0.3854,
                "fouls": 0.8265,
                "fouls_drawn": 1.2007,
                "blocks": 1.1812,
                "goals": 0.1574,
                "goal_rate": 0.1574,
                "assists": 0.0221,
                "assist_rate": 0.0221,
                "expected_goals": 0.2057,
                "expected_assists": 0.0365,
                "shots_on_target": 0.5213,
                "big_chances_created": 0.024,
                "xgot": 0.2672,
                "ball_carries": 17.4594,
                "total_progression": 55.7773,
                "progressive_carries": 0.6029,
                "key_pass": 0.2737,
                "shots_off_target": 0.4077
              },
              "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.1505,
                "tackles": 1.4223,
                "tackles_won": 0.8075,
                "clearances": 6.0953,
                "aerial_won": 2.3912,
                "total_shots": 0.9348,
                "rating": 7.1317,
                "minutes": 89.97,
                "total_pass": 57.0014,
                "accurate_pass": 50.4381,
                "duels_won": 5.2934,
                "total_long_balls": 5.1939,
                "accurate_long_balls": 1.86,
                "total_own_half_passes": 32.3664,
                "accurate_own_half_passes": 29.6874,
                "total_opp_half_passes": 24.635,
                "accurate_opp_half_passes": 20.7507,
                "crosses_total": 0.085,
                "crosses_accurate": 0.007,
                "touches": 72.9217,
                "possession_lost": 7.9552,
                "dispossessed": 0.6365,
                "duels_lost": 4.2825,
                "aerial_lost": 2.4449,
                "total_contest": 0.0584,
                "won_contest": 0.058,
                "ball_recovery": 2.829,
                "challenges_lost": 0.3854,
                "fouls": 0.8265,
                "fouls_drawn": 1.2007,
                "blocks": 1.1812,
                "goals": 0.1574,
                "goal_rate": 0.1574,
                "assists": 0.0221,
                "assist_rate": 0.0221,
                "expected_goals": 0.2057,
                "expected_assists": 0.0365,
                "shots_on_target": 0.5213,
                "big_chances_created": 0.024,
                "xgot": 0.2672,
                "ball_carries": 17.4594,
                "total_progression": 55.7773,
                "progressive_carries": 0.6029,
                "key_pass": 0.2737,
                "shots_off_target": 0.4077,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "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": "Oliver McBurnie",
                  "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.1505,
                "tackles": 1.4223,
                "tackles_won": 0.8075,
                "clearances": 6.0953,
                "aerial_won": 2.3912,
                "total_shots": 0.9348,
                "rating": 7.1317,
                "minutes": 89.97,
                "total_pass": 57.0014,
                "accurate_pass": 50.4381,
                "duels_won": 5.2934,
                "total_long_balls": 5.1939,
                "accurate_long_balls": 1.86,
                "total_own_half_passes": 32.3664,
                "accurate_own_half_passes": 29.6874,
                "total_opp_half_passes": 24.635,
                "accurate_opp_half_passes": 20.7507,
                "crosses_total": 0.085,
                "crosses_accurate": 0.007,
                "touches": 72.9217,
                "possession_lost": 7.9552,
                "dispossessed": 0.6365,
                "duels_lost": 4.2825,
                "aerial_lost": 2.4449,
                "total_contest": 0.0584,
                "won_contest": 0.058,
                "ball_recovery": 2.829,
                "challenges_lost": 0.3854,
                "fouls": 0.8265,
                "fouls_drawn": 1.2007,
                "blocks": 1.1812,
                "goal_rate": 0.1574,
                "goals": 0,
                "assist_rate": 0.0221,
                "assists": 0,
                "expected_goals": 0.2057,
                "expected_assists": 0.0365,
                "shots_on_target": 0.5213,
                "big_chances_created": 0.024,
                "xgot": 0.2672,
                "ball_carries": 17.4594,
                "total_progression": 55.7773,
                "progressive_carries": 0.6029,
                "key_pass": 0.2737,
                "shots_off_target": 0.4077,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "interceptions": 1.1505,
                "tackles": 1.4223,
                "tackles_won": 0.8075,
                "clearances": 6.0953,
                "aerial_won": 2.3912,
                "total_shots": 0.9348,
                "rating": 7.1317,
                "minutes": 89.97,
                "total_pass": 57.0014,
                "accurate_pass": 50.4381,
                "duels_won": 5.2934,
                "total_long_balls": 5.1939,
                "accurate_long_balls": 1.86,
                "total_own_half_passes": 32.3664,
                "accurate_own_half_passes": 29.6874,
                "total_opp_half_passes": 24.635,
                "accurate_opp_half_passes": 20.7507,
                "crosses_total": 0.085,
                "crosses_accurate": 0.007,
                "touches": 72.9217,
                "possession_lost": 7.9552,
                "dispossessed": 0.6365,
                "duels_lost": 4.2825,
                "aerial_lost": 2.4449,
                "total_contest": 0.0584,
                "won_contest": 0.058,
                "ball_recovery": 2.829,
                "challenges_lost": 0.3854,
                "fouls": 0.8265,
                "fouls_drawn": 1.2007,
                "blocks": 1.1812,
                "goal_rate": 0.1574,
                "goals": 0,
                "assist_rate": 0.0221,
                "assists": 0,
                "expected_goals": 0.2733,
                "expected_assists": 0.0452,
                "shots_on_target": 0.5213,
                "big_chances_created": 0.024,
                "xgot": 0.355,
                "ball_carries": 17.4594,
                "total_progression": 55.7773,
                "progressive_carries": 0.6029,
                "key_pass": 0.2737,
                "shots_off_target": 0.4077,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "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.8111,
                "creation_factor": 0.8335
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2057,
                  "after": 0.2733
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0365,
                  "after": 0.0452
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 88.0)",
              "stats": {
                "interceptions": 1.1505,
                "tackles": 1.4223,
                "tackles_won": 0.8075,
                "clearances": 6.0953,
                "aerial_won": 2.3912,
                "total_shots": 0.9348,
                "rating": 7.1317,
                "minutes": 89.97,
                "total_pass": 57.0014,
                "accurate_pass": 50.4381,
                "duels_won": 5.2934,
                "total_long_balls": 5.1939,
                "accurate_long_balls": 1.86,
                "total_own_half_passes": 32.3664,
                "accurate_own_half_passes": 29.6874,
                "total_opp_half_passes": 24.635,
                "accurate_opp_half_passes": 20.7507,
                "crosses_total": 0.085,
                "crosses_accurate": 0.007,
                "touches": 72.9217,
                "possession_lost": 7.9552,
                "dispossessed": 0.6365,
                "duels_lost": 4.2825,
                "aerial_lost": 2.4449,
                "total_contest": 0.0584,
                "won_contest": 0.058,
                "ball_recovery": 2.829,
                "challenges_lost": 0.3854,
                "fouls": 0.8265,
                "fouls_drawn": 1.2007,
                "blocks": 1.1812,
                "goal_rate": 0.1574,
                "goals": 0,
                "assist_rate": 0.0221,
                "assists": 0,
                "expected_goals": 0.2733,
                "expected_assists": 0.0452,
                "shots_on_target": 0.5213,
                "big_chances_created": 0.024,
                "xgot": 0.355,
                "ball_carries": 17.4594,
                "total_progression": 55.7773,
                "progressive_carries": 0.6029,
                "key_pass": 0.2737,
                "shots_off_target": 0.4077,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "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.8111,
                "creation_factor": 0.8335,
                "fifa_overall": 88.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 227,
                "fifa_rank": 28.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 88.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.1505,
                "tackles": 1.4223,
                "tackles_won": 0.8075,
                "clearances": 6.0953,
                "aerial_won": 2.3912,
                "total_shots": 0.9348,
                "rating": 7.1317,
                "minutes": 89.97,
                "total_pass": 57.0014,
                "accurate_pass": 50.4381,
                "duels_won": 5.2934,
                "total_long_balls": 5.1939,
                "accurate_long_balls": 1.86,
                "total_own_half_passes": 32.3664,
                "accurate_own_half_passes": 29.6874,
                "total_opp_half_passes": 24.635,
                "accurate_opp_half_passes": 20.7507,
                "crosses_total": 0.085,
                "crosses_accurate": 0.007,
                "touches": 72.9217,
                "possession_lost": 7.9552,
                "dispossessed": 0.6365,
                "duels_lost": 4.2825,
                "aerial_lost": 2.4449,
                "total_contest": 0.0584,
                "won_contest": 0.058,
                "ball_recovery": 2.829,
                "challenges_lost": 0.3854,
                "fouls": 0.8265,
                "fouls_drawn": 1.2007,
                "blocks": 1.1812,
                "goal_rate": 0.1574,
                "goals": 0,
                "assist_rate": 0.0221,
                "assists": 0,
                "expected_goals": 0.2733,
                "expected_assists": 0.0452,
                "shots_on_target": 0.5213,
                "big_chances_created": 0.024,
                "xgot": 0.355,
                "ball_carries": 17.4594,
                "total_progression": 55.7773,
                "progressive_carries": 0.6029,
                "key_pass": 0.2737,
                "shots_off_target": 0.4077,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "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.2391,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8111,
                "creation_factor": 0.8335,
                "fifa_overall": 88.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.2391,
                "goal_rate": 0.1574,
                "scorer_weight": 0.2217,
                "squad_weight_total": 2.0855,
                "weight_share": 0.1063,
                "finishing_factor": 0.8111,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.1505,
                "tackles": 1.4223,
                "tackles_won": 0.8075,
                "clearances": 6.0953,
                "aerial_won": 2.3912,
                "total_shots": 0.9348,
                "rating": 7.1317,
                "minutes": 89.97,
                "total_pass": 57.0014,
                "accurate_pass": 50.4381,
                "duels_won": 5.2934,
                "total_long_balls": 5.1939,
                "accurate_long_balls": 1.86,
                "total_own_half_passes": 32.3664,
                "accurate_own_half_passes": 29.6874,
                "total_opp_half_passes": 24.635,
                "accurate_opp_half_passes": 20.7507,
                "crosses_total": 0.085,
                "crosses_accurate": 0.007,
                "touches": 72.9217,
                "possession_lost": 7.9552,
                "dispossessed": 0.6365,
                "duels_lost": 4.2825,
                "aerial_lost": 2.4449,
                "total_contest": 0.0584,
                "won_contest": 0.058,
                "ball_recovery": 2.829,
                "challenges_lost": 0.3854,
                "fouls": 0.8265,
                "fouls_drawn": 1.2007,
                "blocks": 1.1812,
                "goal_rate": 0.1574,
                "goals": 0,
                "assist_rate": 0.0221,
                "assists": 0,
                "expected_goals": 0.2733,
                "expected_assists": 0.0452,
                "shots_on_target": 0.5213,
                "big_chances_created": 0.024,
                "xgot": 0.355,
                "ball_carries": 17.4594,
                "total_progression": 55.7773,
                "progressive_carries": 0.6029,
                "key_pass": 0.2737,
                "shots_off_target": 0.4077,
                "tackles_in_zone": 1.2,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Oliver McBurnie",
                "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.2391,
                "projected_assists": 0,
                "assist_probability": 0.0442,
                "finishing_factor": 0.8111,
                "creation_factor": 0.8335,
                "fifa_overall": 88.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0442,
                "assist_rate": 0.0221,
                "provider_weight": 0.0377,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0241,
                "creation_factor": 0.8335,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Myles Lewis-Skelly": {
          "player_id": 1423711,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 49,
          "height": 178,
          "market_value": 69000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.8303,
            "minutes": 74,
            "total_pass": 47,
            "accurate_pass": 44,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 20,
            "total_opp_half_passes": 26,
            "accurate_opp_half_passes": 24,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 58,
            "possession_lost": 5.8916,
            "dispossessed": 0.5995,
            "duels_lost": 3,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0283,
            "expected_assists": 0.1168,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 15,
            "total_progression": 56,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 1,
            "tackles_in_zone": 2.3,
            "tackles_won_in_zone": 2.0,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.725,
            "opponent_faced": "Regan Slater",
            "pressing_zone": "Left Mid vs Right Back — Wide Channel",
            "matchup_zone": "Left Mid vs Right Back — Wide Channel",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0279,
            "projected_assists": 0,
            "assist_probability": 0.1102,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363907.0,
              "match_date": "2026-11-01 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Liverpool",
              "away_team": "Arsenal",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Arsenal",
              "opponent": "Liverpool",
              "stats": {},
              "has_player_stats": false,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 68,
                "rating": 7.4,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0579,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 38,
                "accurate_pass": 34,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 0,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 5,
                "ball_recovery": 4,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 63,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0231,
                "expected_assists": 0.3464,
                "total_shots": 1,
                "total_pass": 51,
                "accurate_pass": 48,
                "interceptions": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 45,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0048,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 27,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 67,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0331,
                "expected_assists": 0.1029,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 28,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 71,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0734,
                "expected_assists": 0.0182,
                "total_shots": 1,
                "total_pass": 50,
                "accurate_pass": 47,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.057,
                "expected_assists": 0.1067,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 81,
                "accurate_pass": 77,
                "key_pass": 1,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.018,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 54,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 17,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023942.0,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0168,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 52,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1537,
            "combined_rank_score": 626.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 122.0,
            "sofascore_rating": 7.4,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1131.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8303,
            "source_file": "data/player_rankings.csv",
            "player_name": "Myles Lewis-Skelly",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Dong-jin Park",
                  "ranking": 1532
                },
                {
                  "player_name": "Nathaniel Brown",
                  "ranking": 1533
                },
                {
                  "player_name": "Kota Mizunuma",
                  "ranking": 1534
                },
                {
                  "player_name": "César Pinares",
                  "ranking": 1535
                },
                {
                  "player_name": "Ivan Šunjić",
                  "ranking": 1536
                }
              ],
              "lower": [
                {
                  "player_name": "Raoul Bellanova",
                  "ranking": 1538
                },
                {
                  "player_name": "Joelinton",
                  "ranking": 1539
                },
                {
                  "player_name": "Edin Džeko",
                  "ranking": 1540
                },
                {
                  "player_name": "Leander Dendoncker",
                  "ranking": 1541
                },
                {
                  "player_name": "Yeong-jun Choi",
                  "ranking": 1542
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.768,
          "history_matches": 26,
          "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": 26,
            "data_confidence": 0.768,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0176,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 160.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.13,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.12
            },
            "rationale": "XGBoost regressor (D_service) evaluated 26 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Arsenal, rel: 0.12, 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.7335,
                "tackles": 1.1734,
                "tackles_won": 0.756,
                "clearances": 1.705,
                "aerial_won": 0.6639,
                "total_shots": 0.5279,
                "rating": 6.8303,
                "minutes": 73.96,
                "total_pass": 46.2601,
                "accurate_pass": 42.872,
                "duels_won": 3.6497,
                "total_long_balls": 1.7984,
                "accurate_long_balls": 0.9199,
                "total_own_half_passes": 20.3484,
                "accurate_own_half_passes": 19.2599,
                "total_opp_half_passes": 25.9117,
                "accurate_opp_half_passes": 23.6121,
                "crosses_total": 0.3603,
                "crosses_accurate": 0.0,
                "touches": 57.2523,
                "possession_lost": 5.7897,
                "dispossessed": 0.5891,
                "duels_lost": 2.5581,
                "aerial_lost": 0.2714,
                "total_contest": 0.3485,
                "won_contest": 0.1606,
                "ball_recovery": 2.4413,
                "challenges_lost": 0.1155,
                "fouls": 1.3941,
                "fouls_drawn": 2.0497,
                "blocks": 0.3271,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0209,
                "expected_assists": 0.0928,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.8982,
                "total_progression": 54.6586,
                "progressive_carries": 0.6236,
                "key_pass": 0.4198,
                "shots_off_target": 0.5279
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.1522,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1294,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.11,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0935,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0795,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0675,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0574,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0488,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0415,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0353,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 0.488,
                  "aerialWon": 0.4912,
                  "totalClearance_p90": 1.2623,
                  "totalTackle": 0.6933,
                  "totalTackle_p90": 0.9026
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.7334831953048706,
                    "model_output": 0.7335,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.1002
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0923
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.04
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0274
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0218
                        }
                      ],
                      "others": -0.0405,
                      "total": 0.7335,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.122196
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.113044
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.047415
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.033869
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.027713
                        }
                      ],
                      "others_margin": -0.053833
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.1733779907226562,
                    "model_output": 1.1734,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1624
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1456
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.1226
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0586
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0467
                        }
                      ],
                      "others": -0.003,
                      "total": 1.1734,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.110717
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.098617
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.091367
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.046758
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.038891
                        }
                      ],
                      "others_margin": -0.0027
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7559820413589478,
                    "model_output": 0.756,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0902
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0859
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0767
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0344
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0286
                        }
                      ],
                      "others": 0.0518,
                      "total": 0.756,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.112492
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.107367
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.095319
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.045922
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.039857
                        }
                      ],
                      "others_margin": 0.0711
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.704977035522461,
                    "model_output": 1.705,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.9825
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3095
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.3092
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2587
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.2244
                        }
                      ],
                      "others": -0.2454,
                      "total": 1.705,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.339165
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119727
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.119628
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.112412
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.108883
                        }
                      ],
                      "others_margin": -0.13447
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.6639387607574463,
                    "model_output": 0.6639,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.4709
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.151
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0976
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0782
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0506
                        }
                      ],
                      "others": -0.0139,
                      "total": 0.6639,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.421235
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.183895
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.139825
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.11351
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.072049
                        }
                      ],
                      "others_margin": -0.020666
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5279378294944763,
                    "model_output": 0.5279,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0601
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.024
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0194
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.0145
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0142
                        }
                      ],
                      "others": -0.0091,
                      "total": 0.5279,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.060108
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.024047
                        },
                        {
                          "name": "rating",
                          "margin": 0.019426
                        },
                        {
                          "name": "totalProgression",
                          "margin": 0.014489
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.014186
                        }
                      ],
                      "others_margin": -0.009101
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.830304145812988,
                    "model_output": 6.8303,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0202
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0138
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0106
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0065
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": 0.0065
                        }
                      ],
                      "others": 0.0145,
                      "total": 6.8303,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.020157
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.013785
                        },
                        {
                          "name": "rating",
                          "margin": 0.010596
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.006543
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": 0.006526
                        }
                      ],
                      "others_margin": 0.01457
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 26,
                  "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.0176, quality 0.869)",
              "stats": {
                "interceptions": 0.7464,
                "tackles": 1.194,
                "tackles_won": 0.7693,
                "clearances": 1.735,
                "aerial_won": 0.6756,
                "total_shots": 0.5372,
                "rating": 6.8303,
                "minutes": 73.96,
                "total_pass": 47.0743,
                "accurate_pass": 43.6265,
                "duels_won": 3.7139,
                "total_long_balls": 1.8301,
                "accurate_long_balls": 0.9361,
                "total_own_half_passes": 20.7065,
                "accurate_own_half_passes": 19.5989,
                "total_opp_half_passes": 26.3677,
                "accurate_opp_half_passes": 24.0277,
                "crosses_total": 0.3666,
                "crosses_accurate": 0.0,
                "touches": 58.2599,
                "possession_lost": 5.8916,
                "dispossessed": 0.5995,
                "duels_lost": 2.6031,
                "aerial_lost": 0.2762,
                "total_contest": 0.3546,
                "won_contest": 0.1634,
                "ball_recovery": 2.4843,
                "challenges_lost": 0.1175,
                "fouls": 1.4186,
                "fouls_drawn": 2.0858,
                "blocks": 0.3329,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0213,
                "expected_assists": 0.0944,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.1604,
                "total_progression": 55.6206,
                "progressive_carries": 0.6346,
                "key_pass": 0.4272,
                "shots_off_target": 0.5372
              },
              "params": {
                "market_value_eur": 69000000,
                "quality_factor": 0.8692,
                "boost_factor": 1.0176,
                "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.0126)",
              "stats": {
                "interceptions": 0.7428,
                "tackles": 1.194,
                "tackles_won": 0.7596,
                "clearances": 1.735,
                "aerial_won": 0.6756,
                "total_shots": 0.5421,
                "rating": 6.8303,
                "minutes": 73.96,
                "total_pass": 47.0743,
                "accurate_pass": 43.6265,
                "duels_won": 3.7139,
                "total_long_balls": 1.8301,
                "accurate_long_balls": 0.9361,
                "total_own_half_passes": 20.7065,
                "accurate_own_half_passes": 19.5989,
                "total_opp_half_passes": 26.3677,
                "accurate_opp_half_passes": 24.0277,
                "crosses_total": 0.362,
                "crosses_accurate": 0.0,
                "touches": 58.2599,
                "possession_lost": 5.8916,
                "dispossessed": 0.5995,
                "duels_lost": 2.6031,
                "aerial_lost": 0.2762,
                "total_contest": 0.3546,
                "won_contest": 0.1634,
                "ball_recovery": 2.4843,
                "challenges_lost": 0.1175,
                "fouls": 1.4065,
                "fouls_drawn": 2.0883,
                "blocks": 0.3329,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0213,
                "expected_assists": 0.0944,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.1604,
                "total_progression": 55.6206,
                "progressive_carries": 0.6346,
                "key_pass": 0.4272,
                "shots_off_target": 0.5372
              },
              "params": {
                "blend_weight": 0.0126,
                "history_matches": 26,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8218,
                "prior_reliability": 0.12,
                "competition": "Premier League",
                "squad": "Arsenal"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.4186,
                  "after": 1.4065
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7693,
                  "after": 0.7596
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.7428,
                "tackles": 1.194,
                "tackles_won": 0.7596,
                "clearances": 1.735,
                "aerial_won": 0.6756,
                "total_shots": 0.5421,
                "rating": 6.8303,
                "minutes": 73.96,
                "total_pass": 47.0743,
                "accurate_pass": 43.6265,
                "duels_won": 3.7139,
                "total_long_balls": 1.8301,
                "accurate_long_balls": 0.9361,
                "total_own_half_passes": 20.7065,
                "accurate_own_half_passes": 19.5989,
                "total_opp_half_passes": 26.3677,
                "accurate_opp_half_passes": 24.0277,
                "crosses_total": 0.362,
                "crosses_accurate": 0.0,
                "touches": 58.2599,
                "possession_lost": 5.8916,
                "dispossessed": 0.5995,
                "duels_lost": 2.6031,
                "aerial_lost": 0.2762,
                "total_contest": 0.3546,
                "won_contest": 0.1634,
                "ball_recovery": 2.4843,
                "challenges_lost": 0.1175,
                "fouls": 1.4065,
                "fouls_drawn": 2.0883,
                "blocks": 0.3329,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0213,
                "expected_assists": 0.0944,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.1604,
                "total_progression": 55.6206,
                "progressive_carries": 0.6346,
                "key_pass": 0.4272,
                "shots_off_target": 0.5372
              },
              "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.7428,
                "tackles": 1.194,
                "tackles_won": 0.7596,
                "clearances": 1.735,
                "aerial_won": 0.6756,
                "total_shots": 0.5421,
                "rating": 6.8303,
                "minutes": 73.96,
                "total_pass": 47.0743,
                "accurate_pass": 43.6265,
                "duels_won": 3.7139,
                "total_long_balls": 1.8301,
                "accurate_long_balls": 0.9361,
                "total_own_half_passes": 20.7065,
                "accurate_own_half_passes": 19.5989,
                "total_opp_half_passes": 26.3677,
                "accurate_opp_half_passes": 24.0277,
                "crosses_total": 0.362,
                "crosses_accurate": 0.0,
                "touches": 58.2599,
                "possession_lost": 5.8916,
                "dispossessed": 0.5995,
                "duels_lost": 2.6031,
                "aerial_lost": 0.2762,
                "total_contest": 0.3546,
                "won_contest": 0.1634,
                "ball_recovery": 2.4843,
                "challenges_lost": 0.1175,
                "fouls": 1.4065,
                "fouls_drawn": 2.0883,
                "blocks": 0.3329,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0213,
                "expected_assists": 0.0944,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.1604,
                "total_progression": 55.6206,
                "progressive_carries": 0.6346,
                "key_pass": 0.4272,
                "shots_off_target": 0.5372,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.725,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Regan Slater",
                  "matchup_zone": "Left Mid vs Right Back — Wide Channel"
                }
              }
            },
            {
              "step": "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.7428,
                "tackles": 1.194,
                "tackles_won": 0.7596,
                "clearances": 1.735,
                "aerial_won": 0.6756,
                "total_shots": 0.5421,
                "rating": 6.8303,
                "minutes": 73.96,
                "total_pass": 47.0743,
                "accurate_pass": 43.6265,
                "duels_won": 3.7139,
                "total_long_balls": 1.8301,
                "accurate_long_balls": 0.9361,
                "total_own_half_passes": 20.7065,
                "accurate_own_half_passes": 19.5989,
                "total_opp_half_passes": 26.3677,
                "accurate_opp_half_passes": 24.0277,
                "crosses_total": 0.362,
                "crosses_accurate": 0.0,
                "touches": 58.2599,
                "possession_lost": 5.8916,
                "dispossessed": 0.5995,
                "duels_lost": 2.6031,
                "aerial_lost": 0.2762,
                "total_contest": 0.3546,
                "won_contest": 0.1634,
                "ball_recovery": 2.4843,
                "challenges_lost": 0.1175,
                "fouls": 1.4065,
                "fouls_drawn": 2.0883,
                "blocks": 0.3329,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0213,
                "expected_assists": 0.0944,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.1604,
                "total_progression": 55.6206,
                "progressive_carries": 0.6346,
                "key_pass": 0.4272,
                "shots_off_target": 0.5372,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.725,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "interceptions": 0.7428,
                "tackles": 1.194,
                "tackles_won": 0.7596,
                "clearances": 1.735,
                "aerial_won": 0.6756,
                "total_shots": 0.5421,
                "rating": 6.8303,
                "minutes": 73.96,
                "total_pass": 47.0743,
                "accurate_pass": 43.6265,
                "duels_won": 3.7139,
                "total_long_balls": 1.8301,
                "accurate_long_balls": 0.9361,
                "total_own_half_passes": 20.7065,
                "accurate_own_half_passes": 19.5989,
                "total_opp_half_passes": 26.3677,
                "accurate_opp_half_passes": 24.0277,
                "crosses_total": 0.362,
                "crosses_accurate": 0.0,
                "touches": 58.2599,
                "possession_lost": 5.8916,
                "dispossessed": 0.5995,
                "duels_lost": 2.6031,
                "aerial_lost": 0.2762,
                "total_contest": 0.3546,
                "won_contest": 0.1634,
                "ball_recovery": 2.4843,
                "challenges_lost": 0.1175,
                "fouls": 1.4065,
                "fouls_drawn": 2.0883,
                "blocks": 0.3329,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0283,
                "expected_assists": 0.1168,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.1604,
                "total_progression": 55.6206,
                "progressive_carries": 0.6346,
                "key_pass": 0.4272,
                "shots_off_target": 0.5372,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.725,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0213,
                  "after": 0.0283
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0944,
                  "after": 0.1168
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 78.0)",
              "stats": {
                "interceptions": 0.7428,
                "tackles": 1.194,
                "tackles_won": 0.7596,
                "clearances": 1.735,
                "aerial_won": 0.6756,
                "total_shots": 0.5421,
                "rating": 6.8303,
                "minutes": 73.96,
                "total_pass": 47.0743,
                "accurate_pass": 43.6265,
                "duels_won": 3.7139,
                "total_long_balls": 1.8301,
                "accurate_long_balls": 0.9361,
                "total_own_half_passes": 20.7065,
                "accurate_own_half_passes": 19.5989,
                "total_opp_half_passes": 26.3677,
                "accurate_opp_half_passes": 24.0277,
                "crosses_total": 0.362,
                "crosses_accurate": 0.0,
                "touches": 58.2599,
                "possession_lost": 5.8916,
                "dispossessed": 0.5995,
                "duels_lost": 2.6031,
                "aerial_lost": 0.2762,
                "total_contest": 0.3546,
                "won_contest": 0.1634,
                "ball_recovery": 2.4843,
                "challenges_lost": 0.1175,
                "fouls": 1.4065,
                "fouls_drawn": 2.0883,
                "blocks": 0.3329,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0283,
                "expected_assists": 0.1168,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.1604,
                "total_progression": 55.6206,
                "progressive_carries": 0.6346,
                "key_pass": 0.4272,
                "shots_off_target": 0.5372,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.725,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 78.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": 1537,
                "fifa_rank": 1131.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.7428,
                "tackles": 1.194,
                "tackles_won": 0.7596,
                "clearances": 1.735,
                "aerial_won": 0.6756,
                "total_shots": 0.5421,
                "rating": 6.8303,
                "minutes": 73.96,
                "total_pass": 47.0743,
                "accurate_pass": 43.6265,
                "duels_won": 3.7139,
                "total_long_balls": 1.8301,
                "accurate_long_balls": 0.9361,
                "total_own_half_passes": 20.7065,
                "accurate_own_half_passes": 19.5989,
                "total_opp_half_passes": 26.3677,
                "accurate_opp_half_passes": 24.0277,
                "crosses_total": 0.362,
                "crosses_accurate": 0.0,
                "touches": 58.2599,
                "possession_lost": 5.8916,
                "dispossessed": 0.5995,
                "duels_lost": 2.6031,
                "aerial_lost": 0.2762,
                "total_contest": 0.3546,
                "won_contest": 0.1634,
                "ball_recovery": 2.4843,
                "challenges_lost": 0.1175,
                "fouls": 1.4065,
                "fouls_drawn": 2.0883,
                "blocks": 0.3329,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0283,
                "expected_assists": 0.1168,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.1604,
                "total_progression": 55.6206,
                "progressive_carries": 0.6346,
                "key_pass": 0.4272,
                "shots_off_target": 0.5372,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.725,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0279,
                "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.0279,
                "goal_rate": 0.0,
                "scorer_weight": 0.0226,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0109,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.7428,
                "tackles": 1.194,
                "tackles_won": 0.7596,
                "clearances": 1.735,
                "aerial_won": 0.6756,
                "total_shots": 0.5421,
                "rating": 6.8303,
                "minutes": 73.96,
                "total_pass": 47.0743,
                "accurate_pass": 43.6265,
                "duels_won": 3.7139,
                "total_long_balls": 1.8301,
                "accurate_long_balls": 0.9361,
                "total_own_half_passes": 20.7065,
                "accurate_own_half_passes": 19.5989,
                "total_opp_half_passes": 26.3677,
                "accurate_opp_half_passes": 24.0277,
                "crosses_total": 0.362,
                "crosses_accurate": 0.0,
                "touches": 58.2599,
                "possession_lost": 5.8916,
                "dispossessed": 0.5995,
                "duels_lost": 2.6031,
                "aerial_lost": 0.2762,
                "total_contest": 0.3546,
                "won_contest": 0.1634,
                "ball_recovery": 2.4843,
                "challenges_lost": 0.1175,
                "fouls": 1.4065,
                "fouls_drawn": 2.0883,
                "blocks": 0.3329,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0283,
                "expected_assists": 0.1168,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.1604,
                "total_progression": 55.6206,
                "progressive_carries": 0.6346,
                "key_pass": 0.4272,
                "shots_off_target": 0.5372,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.725,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0279,
                "projected_assists": 0,
                "assist_probability": 0.1102,
                "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.1102,
                "assist_rate": 0.0,
                "provider_weight": 0.0934,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0598,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Declan Rice": {
          "player_id": 856714,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 41,
          "height": 188,
          "market_value": 114000000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.265,
            "assist_rate": 0.2552,
            "assists": 1,
            "expected_goals": 0.1108,
            "goal_rate": 0.1127,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 7.3485,
            "minutes": 86,
            "total_pass": 69,
            "accurate_pass": 62,
            "duels_won": 4,
            "total_long_balls": 5,
            "accurate_long_balls": 3,
            "total_own_half_passes": 26,
            "accurate_own_half_passes": 24,
            "total_opp_half_passes": 43,
            "accurate_opp_half_passes": 38,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 84,
            "possession_lost": 11.6362,
            "dispossessed": 0.5877,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 2,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0146,
            "ball_carries": 30,
            "total_progression": 114,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.3214,
            "dribbles_attempted": 4,
            "dribbles_successful": 2.2,
            "crosses_attempted": 2.7,
            "duel_win_rate": 0.639,
            "pressing_faced": "LOW",
            "matchup_zone": "LW vs CB",
            "numerical_situation": "1v1",
            "opponent_defenders": "John Egan",
            "opponent_faced": "John Egan",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1049,
            "projected_assists": 1,
            "assist_probability": 0.2328,
            "finishing_factor": 1.2196,
            "creation_factor": 1.1547,
            "fifa_overall": 88.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363907.0,
              "match_date": "2026-11-01 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Liverpool",
              "away_team": "Arsenal",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Arsenal",
              "opponent": "Liverpool",
              "stats": {},
              "has_player_stats": false,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 80,
                "rating": 8.2,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0412,
                "expected_assists": 0.4907,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 55,
                "accurate_pass": 52,
                "key_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 2,
                "ball_recovery": 1,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1615,
                "expected_assists": 0.389,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 99,
                "accurate_pass": 93,
                "key_pass": 3,
                "interceptions": 1,
                "clearances": 1,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0776,
                "total_shots": 0,
                "total_pass": 72,
                "accurate_pass": 63,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 9,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0156,
                "expected_assists": 0.0602,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 60,
                "accurate_pass": 53,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 81,
                "rating": 7.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.3701,
                "total_shots": 0,
                "total_pass": 68,
                "accurate_pass": 59,
                "key_pass": 3,
                "tackles": 2,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0274,
                "expected_assists": 0.0783,
                "total_shots": 1,
                "total_pass": 68,
                "accurate_pass": 63,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 85,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0969,
                "total_shots": 0,
                "total_pass": 77,
                "accurate_pass": 71,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 68,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0728,
                "expected_assists": 0.0765,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 75,
                "accurate_pass": 71,
                "interceptions": 1,
                "clearances": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 8.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.041,
                "total_shots": 0,
                "total_pass": 83,
                "accurate_pass": 73,
                "tackles": 5,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 58,
            "combined_rank_score": 69.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 103.0,
            "sofascore_rating": 7.4583,
            "sofascore_appearances": 36.0,
            "fifa_rank": 35.0,
            "fifa_overall": 88.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.3485,
            "source_file": "data/player_rankings.csv",
            "player_name": "Declan Rice",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Florian Wirtz",
                  "ranking": 53
                },
                {
                  "player_name": "Martín Zubimendi",
                  "ranking": 54
                },
                {
                  "player_name": "Luan Dias",
                  "ranking": 55
                },
                {
                  "player_name": "César Yanis",
                  "ranking": 56
                },
                {
                  "player_name": "Pau Cubarsí",
                  "ranking": 57
                }
              ],
              "lower": [
                {
                  "player_name": "Frenkie de Jong",
                  "ranking": 59
                },
                {
                  "player_name": "Lucas Paquetá",
                  "ranking": 60
                },
                {
                  "player_name": "Rúben Dias",
                  "ranking": 61
                },
                {
                  "player_name": "Luis Díaz",
                  "ranking": 62
                },
                {
                  "player_name": "Max Weiss",
                  "ranking": 63
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.767,
          "history_matches": 44,
          "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": 44,
            "data_confidence": 0.767,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.012,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 151.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.19,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1133
            },
            "rationale": "XGBoost regressor (M_service) evaluated 44 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Arsenal, 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": 2.4069,
                "expected_assists": 0.2118,
                "assists": 0.2541,
                "assist_rate": 0.2541,
                "expected_goals": 0.0624,
                "goals": 0.0849,
                "goal_rate": 0.0849,
                "shots_on_target": 0.2434,
                "total_shots": 0.9814,
                "rating": 7.3485,
                "minutes": 85.53,
                "total_pass": 68.3752,
                "accurate_pass": 61.5126,
                "duels_won": 3.47,
                "total_long_balls": 5.2241,
                "accurate_long_balls": 2.7075,
                "total_own_half_passes": 25.7239,
                "accurate_own_half_passes": 24.0537,
                "total_opp_half_passes": 42.6513,
                "accurate_opp_half_passes": 37.459,
                "crosses_total": 4.2676,
                "crosses_accurate": 1.1831,
                "touches": 83.1831,
                "possession_lost": 11.4982,
                "dispossessed": 0.5807,
                "duels_lost": 2.8057,
                "aerial_won": 0.9763,
                "aerial_lost": 0.7631,
                "interceptions": 1.0404,
                "tackles_won": 0.8998,
                "tackles": 1.4845,
                "clearances": 2.0373,
                "total_contest": 0.6477,
                "won_contest": 0.4803,
                "challenges_lost": 0.5942,
                "fouls": 0.7004,
                "fouls_drawn": 0.529,
                "blocks": 0.3881,
                "big_chances_created": 0.4751,
                "big_chances_missed": 0.0025,
                "xgot": 0.0082,
                "ball_carries": 29.8858,
                "total_progression": 112.6409,
                "progressive_carries": 2.197,
                "shots_off_target": 0.738
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.6954,
                  "creative_index": 0.9116,
                  "expectedGoals": 0.0415,
                  "expectedAssists": 0.2246,
                  "keyPass": 1.9421
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 2.4068708419799805,
                    "model_output": 2.4069,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": 0.2023
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1678
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1819
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.1061
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.1122
                        }
                      ],
                      "others": 0.7464,
                      "total": 2.4069,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.204775
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.142875
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.134809
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.071007
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.069964
                        }
                      ],
                      "others_margin": 0.371197
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.21178673207759857,
                    "model_output": 0.2118,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0185
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0136
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0144
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0107
                        },
                        {
                          "name": "goalAssist",
                          "contribution": 0.0084
                        }
                      ],
                      "others": 0.0615,
                      "total": 0.2118,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": 0.197893
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.123924
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.116026
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.078355
                        },
                        {
                          "name": "goalAssist",
                          "margin": 0.057802
                        }
                      ],
                      "others_margin": 0.342748
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.25407370924949646,
                    "model_output": 0.2541,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0349
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0153
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0172
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0177
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0165
                        }
                      ],
                      "others": 0.0674,
                      "total": 0.2541,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.343488
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.120291
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.119926
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.109661
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.092538
                        }
                      ],
                      "others_margin": 0.307439
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.062392596155405045,
                    "model_output": 0.0624,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.013
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.01
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0069
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0054
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.0111,
                      "total": 0.0624,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.152841
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119482
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.081078
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.0685
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.040331
                        }
                      ],
                      "others_margin": -0.163078
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08490919321775436,
                    "model_output": 0.0849,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0177
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0106
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0074
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0062
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0057
                        }
                      ],
                      "others": 0.0117,
                      "total": 0.0849,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.207563
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.147747
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.105961
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.088474
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.080681
                        }
                      ],
                      "others_margin": 0.149354
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2433919608592987,
                    "model_output": 0.2434,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0423
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0318
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0298
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0179
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0158
                        }
                      ],
                      "others": -0.0005,
                      "total": 0.2434,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.142809
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.109363
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.101923
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.066775
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.062738
                        }
                      ],
                      "others_margin": -0.002114
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9813992977142334,
                    "model_output": 0.9814,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1555
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1392
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0921
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0592
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0511
                        }
                      ],
                      "others": -0.0958,
                      "total": 0.9814,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.155455
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.139223
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.09212
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.059205
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.051121
                        }
                      ],
                      "others_margin": -0.095769
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.348469257354736,
                    "model_output": 7.3485,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.1399
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0822
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0371
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0339
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0306
                        }
                      ],
                      "others": 0.1674,
                      "total": 7.3485,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.139933
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.082245
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.037113
                        },
                        {
                          "name": "touches",
                          "margin": 0.033919
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.030597
                        }
                      ],
                      "others_margin": 0.167259
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 44,
                  "role_matches": 43,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0120, quality 0.897)",
              "stats": {
                "key_pass": 2.4358,
                "expected_assists": 0.2143,
                "assists": 0.2571,
                "assist_rate": 0.2571,
                "expected_goals": 0.0631,
                "goals": 0.0859,
                "goal_rate": 0.0859,
                "shots_on_target": 0.2463,
                "total_shots": 0.9932,
                "rating": 7.3485,
                "minutes": 85.53,
                "total_pass": 69.1957,
                "accurate_pass": 62.2508,
                "duels_won": 3.5116,
                "total_long_balls": 5.2868,
                "accurate_long_balls": 2.74,
                "total_own_half_passes": 26.0326,
                "accurate_own_half_passes": 24.3423,
                "total_opp_half_passes": 43.1631,
                "accurate_opp_half_passes": 37.9085,
                "crosses_total": 4.3188,
                "crosses_accurate": 1.1973,
                "touches": 84.1813,
                "possession_lost": 11.6362,
                "dispossessed": 0.5877,
                "duels_lost": 2.8394,
                "aerial_won": 0.988,
                "aerial_lost": 0.7723,
                "interceptions": 1.0529,
                "tackles_won": 0.9106,
                "tackles": 1.5023,
                "clearances": 2.0617,
                "total_contest": 0.6555,
                "won_contest": 0.4861,
                "challenges_lost": 0.6013,
                "fouls": 0.7088,
                "fouls_drawn": 0.5353,
                "blocks": 0.3928,
                "big_chances_created": 0.4808,
                "big_chances_missed": 0.0025,
                "xgot": 0.0083,
                "ball_carries": 30.2444,
                "total_progression": 113.9926,
                "progressive_carries": 2.2234,
                "shots_off_target": 0.7469
              },
              "params": {
                "market_value_eur": 114000000,
                "quality_factor": 0.8967,
                "boost_factor": 1.012,
                "reference_quality": 0.505,
                "history_matches": 44,
                "history_shrink": 0.102,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0075)",
              "stats": {
                "key_pass": 2.4358,
                "expected_assists": 0.2143,
                "assists": 0.2552,
                "assist_rate": 0.2552,
                "expected_goals": 0.0631,
                "goals": 0.0853,
                "goal_rate": 0.0853,
                "shots_on_target": 0.2444,
                "total_shots": 0.9942,
                "rating": 7.3485,
                "minutes": 85.53,
                "total_pass": 69.1957,
                "accurate_pass": 62.2508,
                "duels_won": 3.5116,
                "total_long_balls": 5.2868,
                "accurate_long_balls": 2.74,
                "total_own_half_passes": 26.0326,
                "accurate_own_half_passes": 24.3423,
                "total_opp_half_passes": 43.1631,
                "accurate_opp_half_passes": 37.9085,
                "crosses_total": 4.32,
                "crosses_accurate": 1.1973,
                "touches": 84.1813,
                "possession_lost": 11.6362,
                "dispossessed": 0.5877,
                "duels_lost": 2.8394,
                "aerial_won": 0.988,
                "aerial_lost": 0.7723,
                "interceptions": 1.0534,
                "tackles_won": 0.9122,
                "tackles": 1.5023,
                "clearances": 2.0617,
                "total_contest": 0.6555,
                "won_contest": 0.4861,
                "challenges_lost": 0.6013,
                "fouls": 0.7119,
                "fouls_drawn": 0.5313,
                "blocks": 0.3928,
                "big_chances_created": 0.4808,
                "big_chances_missed": 0.0025,
                "xgot": 0.0083,
                "ball_carries": 30.2444,
                "total_progression": 113.9926,
                "progressive_carries": 2.2234,
                "shots_off_target": 0.7469
              },
              "params": {
                "blend_weight": 0.0075,
                "history_matches": 44,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9503,
                "prior_reliability": 0.1133,
                "competition": "Premier League",
                "squad": "Arsenal"
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 2.4358,
                "expected_assists": 0.2143,
                "assists": 0.2552,
                "assist_rate": 0.2552,
                "expected_goals": 0.0631,
                "goals": 0.0853,
                "goal_rate": 0.0853,
                "shots_on_target": 0.2444,
                "total_shots": 0.9942,
                "rating": 7.3485,
                "minutes": 85.53,
                "total_pass": 69.1957,
                "accurate_pass": 62.2508,
                "duels_won": 3.5116,
                "total_long_balls": 5.2868,
                "accurate_long_balls": 2.74,
                "total_own_half_passes": 26.0326,
                "accurate_own_half_passes": 24.3423,
                "total_opp_half_passes": 43.1631,
                "accurate_opp_half_passes": 37.9085,
                "crosses_total": 4.32,
                "crosses_accurate": 1.1973,
                "touches": 84.1813,
                "possession_lost": 11.6362,
                "dispossessed": 0.5877,
                "duels_lost": 2.8394,
                "aerial_won": 0.988,
                "aerial_lost": 0.7723,
                "interceptions": 1.0534,
                "tackles_won": 0.9122,
                "tackles": 1.5023,
                "clearances": 2.0617,
                "total_contest": 0.6555,
                "won_contest": 0.4861,
                "challenges_lost": 0.6013,
                "fouls": 0.7119,
                "fouls_drawn": 0.5313,
                "blocks": 0.3928,
                "big_chances_created": 0.4808,
                "big_chances_missed": 0.0025,
                "xgot": 0.0083,
                "ball_carries": 30.2444,
                "total_progression": 113.9926,
                "progressive_carries": 2.2234,
                "shots_off_target": 0.7469
              },
              "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.4358,
                "expected_assists": 0.2143,
                "assists": 0.2552,
                "assist_rate": 0.2552,
                "expected_goals": 0.0834,
                "goals": 0.1127,
                "goal_rate": 0.1127,
                "shots_on_target": 0.323,
                "total_shots": 1.3137,
                "rating": 7.3485,
                "minutes": 85.53,
                "total_pass": 69.1957,
                "accurate_pass": 62.2508,
                "duels_won": 3.5116,
                "total_long_balls": 5.2868,
                "accurate_long_balls": 2.74,
                "total_own_half_passes": 26.0326,
                "accurate_own_half_passes": 24.3423,
                "total_opp_half_passes": 43.1631,
                "accurate_opp_half_passes": 37.9085,
                "crosses_total": 4.32,
                "crosses_accurate": 1.1973,
                "touches": 84.1813,
                "possession_lost": 11.6362,
                "dispossessed": 0.5877,
                "duels_lost": 2.8394,
                "aerial_won": 1.2,
                "aerial_lost": 0.7723,
                "interceptions": 1.0534,
                "tackles_won": 0.9122,
                "tackles": 1.5023,
                "clearances": 2.0617,
                "total_contest": 0.6555,
                "won_contest": 0.4861,
                "challenges_lost": 0.6013,
                "fouls": 0.7119,
                "fouls_drawn": 0.5313,
                "blocks": 0.3928,
                "big_chances_created": 0.4808,
                "big_chances_missed": 0.0033,
                "xgot": 0.011,
                "ball_carries": 30.2444,
                "total_progression": 113.9926,
                "progressive_carries": 2.2234,
                "shots_off_target": 0.987,
                "duel_xg_multiplier": 1.3214,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.2,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.639,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "John Egan",
                  "matchup_zone": "LW vs CB",
                  "duel_win_rate": 0.639,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.3214,
                  "skill_edge": 0.2067,
                  "height_edge": 0.012,
                  "attacker_skill": 0.8967,
                  "defender_skill": 0.4374,
                  "attacker_role": "LW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "John Egan",
                      "market_value": 1500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.0834
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.9942,
                  "after": 1.3137
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.7469,
                  "after": 0.987
                },
                {
                  "stat": "aerialWon",
                  "before": 0.988,
                  "after": 1.2
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2444,
                  "after": 0.323
                },
                {
                  "stat": "goals",
                  "before": 0.0853,
                  "after": 0.1127
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0631,
                  "after": 0.0834
                }
              ]
            },
            {
              "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.4358,
                "expected_assists": 0.2143,
                "assist_rate": 0.2552,
                "assists": 0,
                "expected_goals": 0.0834,
                "goal_rate": 0.1127,
                "goals": 0,
                "shots_on_target": 0.323,
                "total_shots": 1.3137,
                "rating": 7.3485,
                "minutes": 85.53,
                "total_pass": 69.1957,
                "accurate_pass": 62.2508,
                "duels_won": 3.5116,
                "total_long_balls": 5.2868,
                "accurate_long_balls": 2.74,
                "total_own_half_passes": 26.0326,
                "accurate_own_half_passes": 24.3423,
                "total_opp_half_passes": 43.1631,
                "accurate_opp_half_passes": 37.9085,
                "crosses_total": 4.32,
                "crosses_accurate": 1.1973,
                "touches": 84.1813,
                "possession_lost": 11.6362,
                "dispossessed": 0.5877,
                "duels_lost": 2.8394,
                "aerial_won": 1.2,
                "aerial_lost": 0.7723,
                "interceptions": 1.0534,
                "tackles_won": 0.9122,
                "tackles": 1.5023,
                "clearances": 2.0617,
                "total_contest": 0.6555,
                "won_contest": 0.4861,
                "challenges_lost": 0.6013,
                "fouls": 0.7119,
                "fouls_drawn": 0.5313,
                "blocks": 0.3928,
                "big_chances_created": 0.4808,
                "big_chances_missed": 0.0033,
                "xgot": 0.011,
                "ball_carries": 30.2444,
                "total_progression": 113.9926,
                "progressive_carries": 2.2234,
                "shots_off_target": 0.987,
                "duel_xg_multiplier": 1.3214,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.2,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.639,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "key_pass": 2.4358,
                "expected_assists": 0.265,
                "assist_rate": 0.2552,
                "assists": 0,
                "expected_goals": 0.1108,
                "goal_rate": 0.1127,
                "goals": 0,
                "shots_on_target": 0.323,
                "total_shots": 1.3137,
                "rating": 7.3485,
                "minutes": 85.53,
                "total_pass": 69.1957,
                "accurate_pass": 62.2508,
                "duels_won": 3.5116,
                "total_long_balls": 5.2868,
                "accurate_long_balls": 2.74,
                "total_own_half_passes": 26.0326,
                "accurate_own_half_passes": 24.3423,
                "total_opp_half_passes": 43.1631,
                "accurate_opp_half_passes": 37.9085,
                "crosses_total": 4.32,
                "crosses_accurate": 1.1973,
                "touches": 84.1813,
                "possession_lost": 11.6362,
                "dispossessed": 0.5877,
                "duels_lost": 2.8394,
                "aerial_won": 1.2,
                "aerial_lost": 0.7723,
                "interceptions": 1.0534,
                "tackles_won": 0.9122,
                "tackles": 1.5023,
                "clearances": 2.0617,
                "total_contest": 0.6555,
                "won_contest": 0.4861,
                "challenges_lost": 0.6013,
                "fouls": 0.7119,
                "fouls_drawn": 0.5313,
                "blocks": 0.3928,
                "big_chances_created": 0.4808,
                "big_chances_missed": 0.0033,
                "xgot": 0.0146,
                "ball_carries": 30.2444,
                "total_progression": 113.9926,
                "progressive_carries": 2.2234,
                "shots_off_target": 0.987,
                "duel_xg_multiplier": 1.3214,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.2,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.639,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "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.2196,
                "creation_factor": 1.1547
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0834,
                  "after": 0.1108
                },
                {
                  "stat": "expected_assists",
                  "before": 0.2143,
                  "after": 0.265
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 88.0)",
              "stats": {
                "key_pass": 2.4358,
                "expected_assists": 0.265,
                "assist_rate": 0.2552,
                "assists": 0,
                "expected_goals": 0.1108,
                "goal_rate": 0.1127,
                "goals": 0,
                "shots_on_target": 0.323,
                "total_shots": 1.3137,
                "rating": 7.3485,
                "minutes": 85.53,
                "total_pass": 69.1957,
                "accurate_pass": 62.2508,
                "duels_won": 3.5116,
                "total_long_balls": 5.2868,
                "accurate_long_balls": 2.74,
                "total_own_half_passes": 26.0326,
                "accurate_own_half_passes": 24.3423,
                "total_opp_half_passes": 43.1631,
                "accurate_opp_half_passes": 37.9085,
                "crosses_total": 4.32,
                "crosses_accurate": 1.1973,
                "touches": 84.1813,
                "possession_lost": 11.6362,
                "dispossessed": 0.5877,
                "duels_lost": 2.8394,
                "aerial_won": 1.2,
                "aerial_lost": 0.7723,
                "interceptions": 1.0534,
                "tackles_won": 0.9122,
                "tackles": 1.5023,
                "clearances": 2.0617,
                "total_contest": 0.6555,
                "won_contest": 0.4861,
                "challenges_lost": 0.6013,
                "fouls": 0.7119,
                "fouls_drawn": 0.5313,
                "blocks": 0.3928,
                "big_chances_created": 0.4808,
                "big_chances_missed": 0.0033,
                "xgot": 0.0146,
                "ball_carries": 30.2444,
                "total_progression": 113.9926,
                "progressive_carries": 2.2234,
                "shots_off_target": 0.987,
                "duel_xg_multiplier": 1.3214,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.2,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.639,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "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.2196,
                "creation_factor": 1.1547,
                "fifa_overall": 88.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": 58,
                "fifa_rank": 35.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 88.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.4358,
                "expected_assists": 0.265,
                "assist_rate": 0.2552,
                "assists": 0,
                "expected_goals": 0.1108,
                "goal_rate": 0.1127,
                "goals": 0,
                "shots_on_target": 0.323,
                "total_shots": 1.3137,
                "rating": 7.3485,
                "minutes": 85.53,
                "total_pass": 69.1957,
                "accurate_pass": 62.2508,
                "duels_won": 3.5116,
                "total_long_balls": 5.2868,
                "accurate_long_balls": 2.74,
                "total_own_half_passes": 26.0326,
                "accurate_own_half_passes": 24.3423,
                "total_opp_half_passes": 43.1631,
                "accurate_opp_half_passes": 37.9085,
                "crosses_total": 4.32,
                "crosses_accurate": 1.1973,
                "touches": 84.1813,
                "possession_lost": 11.6362,
                "dispossessed": 0.5877,
                "duels_lost": 2.8394,
                "aerial_won": 1.2,
                "aerial_lost": 0.7723,
                "interceptions": 1.0534,
                "tackles_won": 0.9122,
                "tackles": 1.5023,
                "clearances": 2.0617,
                "total_contest": 0.6555,
                "won_contest": 0.4861,
                "challenges_lost": 0.6013,
                "fouls": 0.7119,
                "fouls_drawn": 0.5313,
                "blocks": 0.3928,
                "big_chances_created": 0.4808,
                "big_chances_missed": 0.0033,
                "xgot": 0.0146,
                "ball_carries": 30.2444,
                "total_progression": 113.9926,
                "progressive_carries": 2.2234,
                "shots_off_target": 0.987,
                "duel_xg_multiplier": 1.3214,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.2,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.639,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1049,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2196,
                "creation_factor": 1.1547,
                "fifa_overall": 88.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1049,
                "goal_rate": 0.1127,
                "scorer_weight": 0.1351,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0648,
                "finishing_factor": 1.2196,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.4358,
                "expected_assists": 0.265,
                "assist_rate": 0.2552,
                "assists": 1,
                "expected_goals": 0.1108,
                "goal_rate": 0.1127,
                "goals": 0,
                "shots_on_target": 0.323,
                "total_shots": 1.3137,
                "rating": 7.3485,
                "minutes": 85.53,
                "total_pass": 69.1957,
                "accurate_pass": 62.2508,
                "duels_won": 3.5116,
                "total_long_balls": 5.2868,
                "accurate_long_balls": 2.74,
                "total_own_half_passes": 26.0326,
                "accurate_own_half_passes": 24.3423,
                "total_opp_half_passes": 43.1631,
                "accurate_opp_half_passes": 37.9085,
                "crosses_total": 4.32,
                "crosses_accurate": 1.1973,
                "touches": 84.1813,
                "possession_lost": 11.6362,
                "dispossessed": 0.5877,
                "duels_lost": 2.8394,
                "aerial_won": 1.2,
                "aerial_lost": 0.7723,
                "interceptions": 1.0534,
                "tackles_won": 0.9122,
                "tackles": 1.5023,
                "clearances": 2.0617,
                "total_contest": 0.6555,
                "won_contest": 0.4861,
                "challenges_lost": 0.6013,
                "fouls": 0.7119,
                "fouls_drawn": 0.5313,
                "blocks": 0.3928,
                "big_chances_created": 0.4808,
                "big_chances_missed": 0.0033,
                "xgot": 0.0146,
                "ball_carries": 30.2444,
                "total_progression": 113.9926,
                "progressive_carries": 2.2234,
                "shots_off_target": 0.987,
                "duel_xg_multiplier": 1.3214,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.2,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.639,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1049,
                "projected_assists": 1,
                "assist_probability": 0.2328,
                "finishing_factor": 1.2196,
                "creation_factor": 1.1547,
                "fifa_overall": 88.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.2328,
                "assist_rate": 0.2552,
                "provider_weight": 0.306,
                "squad_weight_total": 1.5615,
                "weight_share": 0.196,
                "creation_factor": 1.1547,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Martin Ødegaard": {
          "player_id": 547410,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 178,
          "market_value": 88000000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.2552,
            "assist_rate": 0.2328,
            "assists": 0,
            "expected_goals": 0.3479,
            "goal_rate": 0.3503,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 7.3178,
            "minutes": 83,
            "total_pass": 61,
            "accurate_pass": 55,
            "duels_won": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 18,
            "accurate_own_half_passes": 17,
            "total_opp_half_passes": 43,
            "accurate_opp_half_passes": 37,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 74,
            "possession_lost": 12.4921,
            "dispossessed": 0.8089,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1521,
            "ball_carries": 30,
            "total_progression": 77,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.2568,
            "dribbles_attempted": 4,
            "dribbles_successful": 2.1,
            "crosses_attempted": 2.7,
            "duel_win_rate": 0.595,
            "pressing_faced": "LOW",
            "matchup_zone": "RW vs CB",
            "numerical_situation": "1v1",
            "opponent_defenders": "John Egan",
            "opponent_faced": "John Egan",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.2938,
            "projected_assists": 0,
            "assist_probability": 0.2252,
            "finishing_factor": 1.25,
            "creation_factor": 1.1034,
            "fifa_overall": 86.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363907.0,
              "match_date": "2026-11-01 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Liverpool",
              "away_team": "Arsenal",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Arsenal",
              "opponent": "Liverpool",
              "stats": {},
              "has_player_stats": false,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2622,
                "expected_assists": 0.4218,
                "total_shots": 5,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 99,
                "accurate_pass": 88,
                "key_pass": 2,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 2,
                "ball_recovery": 3,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1555,
                "total_shots": 0,
                "total_pass": 75,
                "accurate_pass": 69,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 89,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.8167,
                "expected_assists": 0.1218,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 60,
                "accurate_pass": 54,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 73,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0695,
                "expected_assists": 0.0154,
                "total_shots": 1,
                "total_pass": 44,
                "accurate_pass": 40,
                "clearances": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 85,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2517,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 37,
                "key_pass": 5,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 77,
                "rating": 9.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7178,
                "expected_assists": 0.877,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 55,
                "accurate_pass": 49,
                "key_pass": 4,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 71,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0781,
                "expected_assists": 0.0724,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 44,
                "accurate_pass": 41,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 76,
                "rating": 8.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2051,
                "expected_assists": 0.0979,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 56,
                "accurate_pass": 52,
                "key_pass": 3,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 89,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2136,
                "expected_assists": 0.089,
                "total_shots": 1,
                "total_pass": 74,
                "accurate_pass": 65,
                "key_pass": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 40,
            "combined_rank_score": 50.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 5.0,
            "sofascore_rating": 8.76,
            "sofascore_appearances": 5.0,
            "fifa_rank": 95.0,
            "fifa_overall": 86.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.3178,
            "source_file": "data/player_rankings.csv",
            "player_name": "Martin Ødegaard",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Virgil van Dijk",
                  "ranking": 35
                },
                {
                  "player_name": "Remo Freuler",
                  "ranking": 36
                },
                {
                  "player_name": "Pablo Cunat Campos",
                  "ranking": 37
                },
                {
                  "player_name": "Pablo Cuñat",
                  "ranking": 38
                },
                {
                  "player_name": "Mike Maignan",
                  "ranking": 39
                }
              ],
              "lower": [
                {
                  "player_name": "Lionel Messi",
                  "ranking": 41
                },
                {
                  "player_name": "Abdumavlon Abduzhalilov",
                  "ranking": 42
                },
                {
                  "player_name": "Eryin Sanhueza",
                  "ranking": 43
                },
                {
                  "player_name": "Euller",
                  "ranking": 44
                },
                {
                  "player_name": "Bukayo Saka",
                  "ranking": 45
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.766,
          "history_matches": 32,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 32,
            "data_confidence": 0.766,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0155,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 145.0,
              "goals_per90": 0.625,
              "assists_per90": 0.0,
              "shots_per90": 2.48,
              "shots_on_target_pct": 25.0,
              "prior_reliability": 0.1067
            },
            "rationale": "XGBoost regressor (M_service) evaluated 32 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Arsenal, rel: 0.11, gls/90: 0.625, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 2.2695,
                "expected_assists": 0.2032,
                "assists": 0.2314,
                "assist_rate": 0.2314,
                "expected_goals": 0.2052,
                "goals": 0.2717,
                "goal_rate": 0.2717,
                "shots_on_target": 0.7528,
                "total_shots": 1.9269,
                "rating": 7.3178,
                "minutes": 82.59,
                "total_pass": 60.2434,
                "accurate_pass": 53.7297,
                "duels_won": 1.9851,
                "total_long_balls": 3.4074,
                "accurate_long_balls": 1.7073,
                "total_own_half_passes": 18.051,
                "accurate_own_half_passes": 17.0042,
                "total_opp_half_passes": 42.1925,
                "accurate_opp_half_passes": 36.7256,
                "crosses_total": 1.9824,
                "crosses_accurate": 0.3072,
                "touches": 72.559,
                "possession_lost": 12.3014,
                "dispossessed": 0.7966,
                "duels_lost": 3.2563,
                "aerial_won": 0.0494,
                "aerial_lost": 0.3198,
                "interceptions": 0.266,
                "tackles_won": 0.3833,
                "tackles": 0.6057,
                "clearances": 0.2986,
                "total_contest": 1.4922,
                "won_contest": 0.521,
                "challenges_lost": 0.7053,
                "fouls": 0.4634,
                "fouls_drawn": 0.8089,
                "blocks": 0.0,
                "big_chances_created": 0.2756,
                "big_chances_missed": 0.1178,
                "xgot": 0.0897,
                "ball_carries": 29.2514,
                "total_progression": 76.1675,
                "progressive_carries": 2.2214,
                "shots_off_target": 1.1741
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1508,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1282,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.109,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.0787,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 9.2
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.0484,
                    "rating": 8.4
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.5834,
                  "creative_index": 0.8149,
                  "expectedGoals": 0.2133,
                  "expectedAssists": 0.2273,
                  "keyPass": 1.6963
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 2.2694835662841797,
                    "model_output": 2.2695,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": 0.1954
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1646
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1546
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.118
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0772
                        }
                      ],
                      "others": 0.6695,
                      "total": 2.2695,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.198423
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.141137
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.116617
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.080664
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.04944
                        }
                      ],
                      "others_margin": 0.349571
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.2031775265932083,
                    "model_output": 0.2032,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0152
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0132
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0079
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0084
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.006
                        }
                      ],
                      "others": 0.0678,
                      "total": 0.2032,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": 0.165146
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.123878
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.067436
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.066996
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.045036
                        }
                      ],
                      "others_margin": 0.406757
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.23138783872127533,
                    "model_output": 0.2314,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0177
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0138
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0155
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0122
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0121
                        }
                      ],
                      "others": 0.075,
                      "total": 0.2314,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.188484
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.125927
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.124769
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.088646
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.080677
                        }
                      ],
                      "others_margin": 0.39131
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.20517395436763763,
                    "model_output": 0.2052,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0327
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0223
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0171
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0094
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0082
                        }
                      ],
                      "others": 0.0237,
                      "total": 0.2052,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.30452
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.164591
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.110449
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.055737
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.046183
                        }
                      ],
                      "others_margin": 0.122585
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.271651953458786,
                    "model_output": 0.2717,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0307
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0282
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0189
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0144
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0139
                        }
                      ],
                      "others": 0.071,
                      "total": 0.2717,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.28113
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.203279
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.115883
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.080499
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.071716
                        }
                      ],
                      "others_margin": 0.302646
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7528045177459717,
                    "model_output": 0.7528,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0998
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0819
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0629
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0349
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0354
                        }
                      ],
                      "others": 0.12,
                      "total": 0.7528,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.273074
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.179077
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118555
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.060268
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.057504
                        }
                      ],
                      "others_margin": 0.173659
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.926930546760559,
                    "model_output": 1.9269,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.3513
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1746
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1335
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0945
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0591
                        }
                      ],
                      "others": 0.318,
                      "total": 1.9269,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.351297
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.17459
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.13348
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.094479
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.059119
                        }
                      ],
                      "others_margin": 0.317988
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.317770004272461,
                    "model_output": 7.3178,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.1141
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0726
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0331
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0282
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0279
                        }
                      ],
                      "others": 0.1845,
                      "total": 7.3178,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.114143
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.072577
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.033084
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.028152
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.027939
                        }
                      ],
                      "others_margin": 0.184472
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 32,
                  "role_matches": 24,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0155, quality 0.888)",
              "stats": {
                "key_pass": 2.3047,
                "expected_assists": 0.2063,
                "assists": 0.235,
                "assist_rate": 0.235,
                "expected_goals": 0.2084,
                "goals": 0.2759,
                "goal_rate": 0.2759,
                "shots_on_target": 0.7645,
                "total_shots": 1.9568,
                "rating": 7.3178,
                "minutes": 82.59,
                "total_pass": 61.1772,
                "accurate_pass": 54.5625,
                "duels_won": 2.0159,
                "total_long_balls": 3.4602,
                "accurate_long_balls": 1.7338,
                "total_own_half_passes": 18.3308,
                "accurate_own_half_passes": 17.2678,
                "total_opp_half_passes": 42.8465,
                "accurate_opp_half_passes": 37.2948,
                "crosses_total": 2.0131,
                "crosses_accurate": 0.312,
                "touches": 73.6837,
                "possession_lost": 12.4921,
                "dispossessed": 0.8089,
                "duels_lost": 3.3068,
                "aerial_won": 0.0502,
                "aerial_lost": 0.3248,
                "interceptions": 0.2701,
                "tackles_won": 0.3892,
                "tackles": 0.6151,
                "clearances": 0.3032,
                "total_contest": 1.5153,
                "won_contest": 0.5291,
                "challenges_lost": 0.7162,
                "fouls": 0.4706,
                "fouls_drawn": 0.8214,
                "blocks": 0.0,
                "big_chances_created": 0.2799,
                "big_chances_missed": 0.1196,
                "xgot": 0.0911,
                "ball_carries": 29.7048,
                "total_progression": 77.3481,
                "progressive_carries": 2.2558,
                "shots_off_target": 1.1923
              },
              "params": {
                "market_value_eur": 88000000,
                "quality_factor": 0.8879,
                "boost_factor": 1.0155,
                "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.0094)",
              "stats": {
                "key_pass": 2.3047,
                "expected_assists": 0.2063,
                "assists": 0.2328,
                "assist_rate": 0.2328,
                "expected_goals": 0.2084,
                "goals": 0.2787,
                "goal_rate": 0.2787,
                "shots_on_target": 0.7627,
                "total_shots": 1.9598,
                "rating": 7.3178,
                "minutes": 82.59,
                "total_pass": 61.1772,
                "accurate_pass": 54.5625,
                "duels_won": 2.0159,
                "total_long_balls": 3.4602,
                "accurate_long_balls": 1.7338,
                "total_own_half_passes": 18.3308,
                "accurate_own_half_passes": 17.2678,
                "total_opp_half_passes": 42.8465,
                "accurate_opp_half_passes": 37.2948,
                "crosses_total": 2.0104,
                "crosses_accurate": 0.312,
                "touches": 73.6837,
                "possession_lost": 12.4921,
                "dispossessed": 0.8089,
                "duels_lost": 3.3068,
                "aerial_won": 0.0502,
                "aerial_lost": 0.3248,
                "interceptions": 0.2676,
                "tackles_won": 0.4017,
                "tackles": 0.6151,
                "clearances": 0.3032,
                "total_contest": 1.5153,
                "won_contest": 0.5291,
                "challenges_lost": 0.7162,
                "fouls": 0.4662,
                "fouls_drawn": 0.8191,
                "blocks": 0.0,
                "big_chances_created": 0.2799,
                "big_chances_missed": 0.1196,
                "xgot": 0.0911,
                "ball_carries": 29.7048,
                "total_progression": 77.3481,
                "progressive_carries": 2.2558,
                "shots_off_target": 1.1923
              },
              "params": {
                "blend_weight": 0.0094,
                "history_matches": 32,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9177,
                "prior_reliability": 0.1067,
                "competition": "Premier League",
                "squad": "Arsenal"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.3892,
                  "after": 0.4017
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 2.3047,
                "expected_assists": 0.2063,
                "assists": 0.2328,
                "assist_rate": 0.2328,
                "expected_goals": 0.2084,
                "goals": 0.2787,
                "goal_rate": 0.2787,
                "shots_on_target": 0.7627,
                "total_shots": 1.9598,
                "rating": 7.3178,
                "minutes": 82.59,
                "total_pass": 61.1772,
                "accurate_pass": 54.5625,
                "duels_won": 2.0159,
                "total_long_balls": 3.4602,
                "accurate_long_balls": 1.7338,
                "total_own_half_passes": 18.3308,
                "accurate_own_half_passes": 17.2678,
                "total_opp_half_passes": 42.8465,
                "accurate_opp_half_passes": 37.2948,
                "crosses_total": 2.0104,
                "crosses_accurate": 0.312,
                "touches": 73.6837,
                "possession_lost": 12.4921,
                "dispossessed": 0.8089,
                "duels_lost": 3.3068,
                "aerial_won": 0.0502,
                "aerial_lost": 0.3248,
                "interceptions": 0.2676,
                "tackles_won": 0.4017,
                "tackles": 0.6151,
                "clearances": 0.3032,
                "total_contest": 1.5153,
                "won_contest": 0.5291,
                "challenges_lost": 0.7162,
                "fouls": 0.4662,
                "fouls_drawn": 0.8191,
                "blocks": 0.0,
                "big_chances_created": 0.2799,
                "big_chances_missed": 0.1196,
                "xgot": 0.0911,
                "ball_carries": 29.7048,
                "total_progression": 77.3481,
                "progressive_carries": 2.2558,
                "shots_off_target": 1.1923
              },
              "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.3047,
                "expected_assists": 0.2063,
                "assists": 0.2328,
                "assist_rate": 0.2328,
                "expected_goals": 0.2619,
                "goals": 0.3503,
                "goal_rate": 0.3503,
                "shots_on_target": 0.9586,
                "total_shots": 2.4631,
                "rating": 7.3178,
                "minutes": 82.59,
                "total_pass": 61.1772,
                "accurate_pass": 54.5625,
                "duels_won": 2.0159,
                "total_long_balls": 3.4602,
                "accurate_long_balls": 1.7338,
                "total_own_half_passes": 18.3308,
                "accurate_own_half_passes": 17.2678,
                "total_opp_half_passes": 42.8465,
                "accurate_opp_half_passes": 37.2948,
                "crosses_total": 2.0104,
                "crosses_accurate": 0.312,
                "touches": 73.6837,
                "possession_lost": 12.4921,
                "dispossessed": 0.8089,
                "duels_lost": 3.3068,
                "aerial_won": 1.0,
                "aerial_lost": 0.3248,
                "interceptions": 0.2676,
                "tackles_won": 0.4017,
                "tackles": 0.6151,
                "clearances": 0.3032,
                "total_contest": 1.5153,
                "won_contest": 0.5291,
                "challenges_lost": 0.7162,
                "fouls": 0.4662,
                "fouls_drawn": 0.8191,
                "blocks": 0.0,
                "big_chances_created": 0.2799,
                "big_chances_missed": 0.1503,
                "xgot": 0.1145,
                "ball_carries": 29.7048,
                "total_progression": 77.3481,
                "progressive_carries": 2.2558,
                "shots_off_target": 1.4985,
                "duel_xg_multiplier": 1.2568,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.1,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.595,
                "pressing_faced": "LOW",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "John Egan",
                  "matchup_zone": "RW vs CB",
                  "duel_win_rate": 0.595,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.2568,
                  "skill_edge": 0.2027,
                  "height_edge": -0.028,
                  "attacker_skill": 0.8879,
                  "defender_skill": 0.4374,
                  "attacker_role": "RW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "John Egan",
                      "market_value": 1500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.2619
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.0502,
                  "after": 1.0
                },
                {
                  "stat": "totalShots",
                  "before": 1.9598,
                  "after": 2.4631
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.1923,
                  "after": 1.4985
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7627,
                  "after": 0.9586
                },
                {
                  "stat": "goals",
                  "before": 0.2787,
                  "after": 0.3503
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2084,
                  "after": 0.2619
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1196,
                  "after": 0.1503
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0911,
                  "after": 0.1145
                }
              ]
            },
            {
              "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.3047,
                "expected_assists": 0.2063,
                "assist_rate": 0.2328,
                "assists": 0,
                "expected_goals": 0.2619,
                "goal_rate": 0.3503,
                "goals": 0,
                "shots_on_target": 0.9586,
                "total_shots": 2.4631,
                "rating": 7.3178,
                "minutes": 82.59,
                "total_pass": 61.1772,
                "accurate_pass": 54.5625,
                "duels_won": 2.0159,
                "total_long_balls": 3.4602,
                "accurate_long_balls": 1.7338,
                "total_own_half_passes": 18.3308,
                "accurate_own_half_passes": 17.2678,
                "total_opp_half_passes": 42.8465,
                "accurate_opp_half_passes": 37.2948,
                "crosses_total": 2.0104,
                "crosses_accurate": 0.312,
                "touches": 73.6837,
                "possession_lost": 12.4921,
                "dispossessed": 0.8089,
                "duels_lost": 3.3068,
                "aerial_won": 1.0,
                "aerial_lost": 0.3248,
                "interceptions": 0.2676,
                "tackles_won": 0.4017,
                "tackles": 0.6151,
                "clearances": 0.3032,
                "total_contest": 1.5153,
                "won_contest": 0.5291,
                "challenges_lost": 0.7162,
                "fouls": 0.4662,
                "fouls_drawn": 0.8191,
                "blocks": 0.0,
                "big_chances_created": 0.2799,
                "big_chances_missed": 0.1503,
                "xgot": 0.1145,
                "ball_carries": 29.7048,
                "total_progression": 77.3481,
                "progressive_carries": 2.2558,
                "shots_off_target": 1.4985,
                "duel_xg_multiplier": 1.2568,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.1,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.595,
                "pressing_faced": "LOW",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "key_pass": 2.3047,
                "expected_assists": 0.2552,
                "assist_rate": 0.2328,
                "assists": 0,
                "expected_goals": 0.3479,
                "goal_rate": 0.3503,
                "goals": 0,
                "shots_on_target": 0.9586,
                "total_shots": 2.4631,
                "rating": 7.3178,
                "minutes": 82.59,
                "total_pass": 61.1772,
                "accurate_pass": 54.5625,
                "duels_won": 2.0159,
                "total_long_balls": 3.4602,
                "accurate_long_balls": 1.7338,
                "total_own_half_passes": 18.3308,
                "accurate_own_half_passes": 17.2678,
                "total_opp_half_passes": 42.8465,
                "accurate_opp_half_passes": 37.2948,
                "crosses_total": 2.0104,
                "crosses_accurate": 0.312,
                "touches": 73.6837,
                "possession_lost": 12.4921,
                "dispossessed": 0.8089,
                "duels_lost": 3.3068,
                "aerial_won": 1.0,
                "aerial_lost": 0.3248,
                "interceptions": 0.2676,
                "tackles_won": 0.4017,
                "tackles": 0.6151,
                "clearances": 0.3032,
                "total_contest": 1.5153,
                "won_contest": 0.5291,
                "challenges_lost": 0.7162,
                "fouls": 0.4662,
                "fouls_drawn": 0.8191,
                "blocks": 0.0,
                "big_chances_created": 0.2799,
                "big_chances_missed": 0.1503,
                "xgot": 0.1521,
                "ball_carries": 29.7048,
                "total_progression": 77.3481,
                "progressive_carries": 2.2558,
                "shots_off_target": 1.4985,
                "duel_xg_multiplier": 1.2568,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.1,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.595,
                "pressing_faced": "LOW",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "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.25,
                "creation_factor": 1.1034
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2619,
                  "after": 0.3479
                },
                {
                  "stat": "expected_assists",
                  "before": 0.2063,
                  "after": 0.2552
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 86.0)",
              "stats": {
                "key_pass": 2.3047,
                "expected_assists": 0.2552,
                "assist_rate": 0.2328,
                "assists": 0,
                "expected_goals": 0.3479,
                "goal_rate": 0.3503,
                "goals": 0,
                "shots_on_target": 0.9586,
                "total_shots": 2.4631,
                "rating": 7.3178,
                "minutes": 82.59,
                "total_pass": 61.1772,
                "accurate_pass": 54.5625,
                "duels_won": 2.0159,
                "total_long_balls": 3.4602,
                "accurate_long_balls": 1.7338,
                "total_own_half_passes": 18.3308,
                "accurate_own_half_passes": 17.2678,
                "total_opp_half_passes": 42.8465,
                "accurate_opp_half_passes": 37.2948,
                "crosses_total": 2.0104,
                "crosses_accurate": 0.312,
                "touches": 73.6837,
                "possession_lost": 12.4921,
                "dispossessed": 0.8089,
                "duels_lost": 3.3068,
                "aerial_won": 1.0,
                "aerial_lost": 0.3248,
                "interceptions": 0.2676,
                "tackles_won": 0.4017,
                "tackles": 0.6151,
                "clearances": 0.3032,
                "total_contest": 1.5153,
                "won_contest": 0.5291,
                "challenges_lost": 0.7162,
                "fouls": 0.4662,
                "fouls_drawn": 0.8191,
                "blocks": 0.0,
                "big_chances_created": 0.2799,
                "big_chances_missed": 0.1503,
                "xgot": 0.1521,
                "ball_carries": 29.7048,
                "total_progression": 77.3481,
                "progressive_carries": 2.2558,
                "shots_off_target": 1.4985,
                "duel_xg_multiplier": 1.2568,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.1,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.595,
                "pressing_faced": "LOW",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "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.25,
                "creation_factor": 1.1034,
                "fifa_overall": 86.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": 40,
                "fifa_rank": 95.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 86.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.3047,
                "expected_assists": 0.2552,
                "assist_rate": 0.2328,
                "assists": 0,
                "expected_goals": 0.3479,
                "goal_rate": 0.3503,
                "goals": 0,
                "shots_on_target": 0.9586,
                "total_shots": 2.4631,
                "rating": 7.3178,
                "minutes": 82.59,
                "total_pass": 61.1772,
                "accurate_pass": 54.5625,
                "duels_won": 2.0159,
                "total_long_balls": 3.4602,
                "accurate_long_balls": 1.7338,
                "total_own_half_passes": 18.3308,
                "accurate_own_half_passes": 17.2678,
                "total_opp_half_passes": 42.8465,
                "accurate_opp_half_passes": 37.2948,
                "crosses_total": 2.0104,
                "crosses_accurate": 0.312,
                "touches": 73.6837,
                "possession_lost": 12.4921,
                "dispossessed": 0.8089,
                "duels_lost": 3.3068,
                "aerial_won": 1.0,
                "aerial_lost": 0.3248,
                "interceptions": 0.2676,
                "tackles_won": 0.4017,
                "tackles": 0.6151,
                "clearances": 0.3032,
                "total_contest": 1.5153,
                "won_contest": 0.5291,
                "challenges_lost": 0.7162,
                "fouls": 0.4662,
                "fouls_drawn": 0.8191,
                "blocks": 0.0,
                "big_chances_created": 0.2799,
                "big_chances_missed": 0.1503,
                "xgot": 0.1521,
                "ball_carries": 29.7048,
                "total_progression": 77.3481,
                "progressive_carries": 2.2558,
                "shots_off_target": 1.4985,
                "duel_xg_multiplier": 1.2568,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.1,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.595,
                "pressing_faced": "LOW",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.2938,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1034,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.2938,
                "goal_rate": 0.3503,
                "scorer_weight": 0.4349,
                "squad_weight_total": 2.0855,
                "weight_share": 0.2085,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.3047,
                "expected_assists": 0.2552,
                "assist_rate": 0.2328,
                "assists": 0,
                "expected_goals": 0.3479,
                "goal_rate": 0.3503,
                "goals": 0,
                "shots_on_target": 0.9586,
                "total_shots": 2.4631,
                "rating": 7.3178,
                "minutes": 82.59,
                "total_pass": 61.1772,
                "accurate_pass": 54.5625,
                "duels_won": 2.0159,
                "total_long_balls": 3.4602,
                "accurate_long_balls": 1.7338,
                "total_own_half_passes": 18.3308,
                "accurate_own_half_passes": 17.2678,
                "total_opp_half_passes": 42.8465,
                "accurate_opp_half_passes": 37.2948,
                "crosses_total": 2.0104,
                "crosses_accurate": 0.312,
                "touches": 73.6837,
                "possession_lost": 12.4921,
                "dispossessed": 0.8089,
                "duels_lost": 3.3068,
                "aerial_won": 1.0,
                "aerial_lost": 0.3248,
                "interceptions": 0.2676,
                "tackles_won": 0.4017,
                "tackles": 0.6151,
                "clearances": 0.3032,
                "total_contest": 1.5153,
                "won_contest": 0.5291,
                "challenges_lost": 0.7162,
                "fouls": 0.4662,
                "fouls_drawn": 0.8191,
                "blocks": 0.0,
                "big_chances_created": 0.2799,
                "big_chances_missed": 0.1503,
                "xgot": 0.1521,
                "ball_carries": 29.7048,
                "total_progression": 77.3481,
                "progressive_carries": 2.2558,
                "shots_off_target": 1.4985,
                "duel_xg_multiplier": 1.2568,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 2.1,
                "crosses_attempted": 2.7,
                "duel_win_rate": 0.595,
                "pressing_faced": "LOW",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "John Egan",
                "opponent_faced": "John Egan",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.2938,
                "projected_assists": 0,
                "assist_probability": 0.2252,
                "finishing_factor": 1.25,
                "creation_factor": 1.1034,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.2252,
                "assist_rate": 0.2328,
                "provider_weight": 0.2816,
                "squad_weight_total": 1.5615,
                "weight_share": 0.1803,
                "creation_factor": 1.1034,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Eberechi Eze": {
          "player_id": 864921,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 10,
          "height": 178,
          "market_value": 63000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0952,
            "assist_rate": 0.0703,
            "assists": 0,
            "expected_goals": 0.1812,
            "goal_rate": 0.1392,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 6.8025,
            "minutes": 71,
            "total_pass": 26,
            "accurate_pass": 21,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 6,
            "total_opp_half_passes": 19,
            "accurate_opp_half_passes": 15,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 37,
            "possession_lost": 8.0892,
            "dispossessed": 1.4304,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.3769,
            "ball_carries": 12,
            "total_progression": 25,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.1946,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.5,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.552,
            "pressing_faced": "LOW",
            "matchup_zone": "CAM vs CM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Matt Crooks",
            "opponent_faced": "Matt Crooks",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1657,
            "projected_assists": 0,
            "assist_probability": 0.0908,
            "finishing_factor": 1.015,
            "creation_factor": 0.9472,
            "fifa_overall": 84.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363907.0,
              "match_date": "2026-11-01 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Liverpool",
              "away_team": "Arsenal",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Arsenal",
              "opponent": "Liverpool",
              "stats": {},
              "has_player_stats": false,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 80,
                "rating": 6.9,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0459,
                "expected_assists": 0.1496,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 33,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 1,
                "ball_recovery": 3,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 45,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0148,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 9,
                "aerial_won": 1,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 17,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0158,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 7,
                "aerial_won": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 9,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0676,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 16,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 14,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0377,
                "expected_assists": 0.0045,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 15,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3633,
                "expected_assists": 0.0125,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 73,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4115,
                "expected_assists": 0.04,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 36,
                "accurate_pass": 33,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023942.0,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 67,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.073,
                "expected_assists": 0.034,
                "total_shots": 3,
                "total_pass": 37,
                "accurate_pass": 36,
                "key_pass": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 475,
            "combined_rank_score": 282.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 369.0,
            "sofascore_rating": 6.9697,
            "sofascore_appearances": 33.0,
            "fifa_rank": 196.0,
            "fifa_overall": 84.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8025,
            "source_file": "data/player_rankings.csv",
            "player_name": "Eberechi Eze",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "James Garner",
                  "ranking": 470
                },
                {
                  "player_name": "Marcus Rashford",
                  "ranking": 471
                },
                {
                  "player_name": "João Cancelo",
                  "ranking": 472
                },
                {
                  "player_name": "Oh-kyu Kim",
                  "ranking": 473
                },
                {
                  "player_name": "Oscar Lopez",
                  "ranking": 474
                }
              ],
              "lower": [
                {
                  "player_name": "Hugo Ekitiké",
                  "ranking": 476
                },
                {
                  "player_name": "Manuel Ángel Castillo",
                  "ranking": 477
                },
                {
                  "player_name": "Willi Orbán",
                  "ranking": 478
                },
                {
                  "player_name": "Kuvondik Ruziev",
                  "ranking": 479
                },
                {
                  "player_name": "Henry Bonello",
                  "ranking": 480
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.757,
          "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.757,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0121,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "minutes": 60.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.5,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.0467
            },
            "rationale": "XGBoost regressor (M_service) evaluated 39 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Arsenal, rel: 0.05, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.9716,
                "expected_assists": 0.0761,
                "assists": 0.0696,
                "assist_rate": 0.0696,
                "expected_goals": 0.1128,
                "goals": 0.1155,
                "goal_rate": 0.1155,
                "shots_on_target": 0.4663,
                "total_shots": 1.4865,
                "rating": 6.8025,
                "minutes": 71.46,
                "total_pass": 25.4098,
                "accurate_pass": 20.9547,
                "duels_won": 3.0932,
                "total_long_balls": 1.4746,
                "accurate_long_balls": 0.7167,
                "total_own_half_passes": 6.7845,
                "accurate_own_half_passes": 6.0459,
                "total_opp_half_passes": 18.6253,
                "accurate_opp_half_passes": 14.9087,
                "crosses_total": 0.4935,
                "crosses_accurate": 0.0561,
                "touches": 36.3837,
                "possession_lost": 7.9925,
                "dispossessed": 1.4133,
                "duels_lost": 3.6362,
                "aerial_won": 0.3924,
                "aerial_lost": 0.8995,
                "interceptions": 0.2414,
                "tackles_won": 0.1791,
                "tackles": 0.2681,
                "clearances": 0.3341,
                "total_contest": 1.2376,
                "won_contest": 0.867,
                "challenges_lost": 0.441,
                "fouls": 0.5507,
                "fouls_drawn": 1.5657,
                "blocks": 0.0082,
                "big_chances_created": 0.0499,
                "big_chances_missed": 0.0057,
                "xgot": 0.2347,
                "ball_carries": 11.7275,
                "total_progression": 24.3439,
                "progressive_carries": 1.3003,
                "shots_off_target": 1.0202
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.1086,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0923,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.1824,
                  "creative_index": 0.1956,
                  "expectedGoals": 0.0844,
                  "expectedAssists": 0.0545,
                  "keyPass": 0.4071
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.9716104865074158,
                    "model_output": 0.9716,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1184
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0805
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0655
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0397
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.037
                        }
                      ],
                      "others": 0.0323,
                      "total": 0.9716,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.1249
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.08318
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.073218
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.044999
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.040138
                        }
                      ],
                      "others_margin": 0.033859
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07608859241008759,
                    "model_output": 0.0761,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.014
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0097
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0056
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0047
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.001,
                      "total": 0.0761,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.181283
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128135
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.067805
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.056714
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.053539
                        }
                      ],
                      "others_margin": -0.011337
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.06962829828262329,
                    "model_output": 0.0696,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": -0.009
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0072
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0061
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.0073,
                      "total": 0.0696,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": -0.111665
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.107408
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.099912
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.077092
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.059617
                        }
                      ],
                      "others_margin": -0.099426
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.11280449479818344,
                    "model_output": 0.1128,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0112
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.008
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0079
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0055
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0048
                        }
                      ],
                      "others": -0.0054,
                      "total": 0.1128,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.115531
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.074595
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.068693
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.047117
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.04156
                        }
                      ],
                      "others_margin": -0.047399
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.11549097299575806,
                    "model_output": 0.1155,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0128
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0133
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0102
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0086
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0057
                        }
                      ],
                      "others": -0.0183,
                      "total": 0.1155,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.126513
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.116835
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.08147
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.063699
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.04155
                        }
                      ],
                      "others_margin": -0.147145
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.46625494956970215,
                    "model_output": 0.4663,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0708
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0567
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0383
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0382
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0259
                        }
                      ],
                      "others": -0.0049,
                      "total": 0.4663,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.200961
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.136212
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.089914
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.089624
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.056646
                        }
                      ],
                      "others_margin": -0.010465
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.4864177703857422,
                    "model_output": 1.4864,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.1869
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.171
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0804
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0478
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.0463
                        }
                      ],
                      "others": -0.0309,
                      "total": 1.4864,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.186872
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.170968
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.080395
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.047756
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.04627
                        }
                      ],
                      "others_margin": -0.030779
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.802544116973877,
                    "model_output": 6.8025,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0344
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0288
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0116
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0094
                        },
                        {
                          "name": "rating",
                          "contribution": -0.008
                        }
                      ],
                      "others": -0.0203,
                      "total": 6.8025,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.034401
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.028815
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.011585
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.00944
                        },
                        {
                          "name": "rating",
                          "margin": -0.007977
                        }
                      ],
                      "others_margin": -0.020274
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 39,
                  "role_matches": 24,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0121, quality 0.859)",
              "stats": {
                "key_pass": 0.9834,
                "expected_assists": 0.077,
                "assists": 0.0705,
                "assist_rate": 0.0705,
                "expected_goals": 0.1142,
                "goals": 0.1169,
                "goal_rate": 0.1169,
                "shots_on_target": 0.4719,
                "total_shots": 1.5044,
                "rating": 6.8025,
                "minutes": 71.46,
                "total_pass": 25.7173,
                "accurate_pass": 21.2083,
                "duels_won": 3.1306,
                "total_long_balls": 1.4924,
                "accurate_long_balls": 0.7254,
                "total_own_half_passes": 6.8666,
                "accurate_own_half_passes": 6.1191,
                "total_opp_half_passes": 18.8507,
                "accurate_opp_half_passes": 15.0891,
                "crosses_total": 0.4995,
                "crosses_accurate": 0.0568,
                "touches": 36.8239,
                "possession_lost": 8.0892,
                "dispossessed": 1.4304,
                "duels_lost": 3.6802,
                "aerial_won": 0.3971,
                "aerial_lost": 0.9104,
                "interceptions": 0.2443,
                "tackles_won": 0.1813,
                "tackles": 0.2713,
                "clearances": 0.3381,
                "total_contest": 1.2526,
                "won_contest": 0.8775,
                "challenges_lost": 0.4463,
                "fouls": 0.5574,
                "fouls_drawn": 1.5846,
                "blocks": 0.0083,
                "big_chances_created": 0.0505,
                "big_chances_missed": 0.0058,
                "xgot": 0.2375,
                "ball_carries": 11.8694,
                "total_progression": 24.6385,
                "progressive_carries": 1.316,
                "shots_off_target": 1.0325
              },
              "params": {
                "market_value_eur": 63000000,
                "quality_factor": 0.8589,
                "boost_factor": 1.0121,
                "reference_quality": 0.505,
                "history_matches": 39,
                "history_shrink": 0.1136,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0034)",
              "stats": {
                "key_pass": 0.9834,
                "expected_assists": 0.077,
                "assists": 0.0703,
                "assist_rate": 0.0703,
                "expected_goals": 0.1142,
                "goals": 0.1165,
                "goal_rate": 0.1165,
                "shots_on_target": 0.4703,
                "total_shots": 1.5033,
                "rating": 6.8025,
                "minutes": 71.46,
                "total_pass": 25.7173,
                "accurate_pass": 21.2083,
                "duels_won": 3.1306,
                "total_long_balls": 1.4924,
                "accurate_long_balls": 0.7254,
                "total_own_half_passes": 6.8666,
                "accurate_own_half_passes": 6.1191,
                "total_opp_half_passes": 18.8507,
                "accurate_opp_half_passes": 15.0891,
                "crosses_total": 0.4978,
                "crosses_accurate": 0.0568,
                "touches": 36.8239,
                "possession_lost": 8.0892,
                "dispossessed": 1.4304,
                "duels_lost": 3.6802,
                "aerial_won": 0.3971,
                "aerial_lost": 0.9104,
                "interceptions": 0.2435,
                "tackles_won": 0.1807,
                "tackles": 0.2713,
                "clearances": 0.3381,
                "total_contest": 1.2526,
                "won_contest": 0.8775,
                "challenges_lost": 0.4463,
                "fouls": 0.5555,
                "fouls_drawn": 1.5909,
                "blocks": 0.0083,
                "big_chances_created": 0.0505,
                "big_chances_missed": 0.0058,
                "xgot": 0.2375,
                "ball_carries": 11.8694,
                "total_progression": 24.6385,
                "progressive_carries": 1.316,
                "shots_off_target": 1.0325
              },
              "params": {
                "blend_weight": 0.0034,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.794,
                "prior_reliability": 0.0467,
                "competition": "Premier League",
                "squad": "Arsenal"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 1.5846,
                  "after": 1.5909
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.9834,
                "expected_assists": 0.077,
                "assists": 0.0703,
                "assist_rate": 0.0703,
                "expected_goals": 0.1142,
                "goals": 0.1165,
                "goal_rate": 0.1165,
                "shots_on_target": 0.4703,
                "total_shots": 1.5033,
                "rating": 6.8025,
                "minutes": 71.46,
                "total_pass": 25.7173,
                "accurate_pass": 21.2083,
                "duels_won": 3.1306,
                "total_long_balls": 1.4924,
                "accurate_long_balls": 0.7254,
                "total_own_half_passes": 6.8666,
                "accurate_own_half_passes": 6.1191,
                "total_opp_half_passes": 18.8507,
                "accurate_opp_half_passes": 15.0891,
                "crosses_total": 0.4978,
                "crosses_accurate": 0.0568,
                "touches": 36.8239,
                "possession_lost": 8.0892,
                "dispossessed": 1.4304,
                "duels_lost": 3.6802,
                "aerial_won": 0.3971,
                "aerial_lost": 0.9104,
                "interceptions": 0.2435,
                "tackles_won": 0.1807,
                "tackles": 0.2713,
                "clearances": 0.3381,
                "total_contest": 1.2526,
                "won_contest": 0.8775,
                "challenges_lost": 0.4463,
                "fouls": 0.5555,
                "fouls_drawn": 1.5909,
                "blocks": 0.0083,
                "big_chances_created": 0.0505,
                "big_chances_missed": 0.0058,
                "xgot": 0.2375,
                "ball_carries": 11.8694,
                "total_progression": 24.6385,
                "progressive_carries": 1.316,
                "shots_off_target": 1.0325
              },
              "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.9834,
                "expected_assists": 0.077,
                "assists": 0.0703,
                "assist_rate": 0.0703,
                "expected_goals": 0.1364,
                "goals": 0.1392,
                "goal_rate": 0.1392,
                "shots_on_target": 0.5618,
                "total_shots": 1.7958,
                "rating": 6.8025,
                "minutes": 71.46,
                "total_pass": 25.7173,
                "accurate_pass": 21.2083,
                "duels_won": 3.1306,
                "total_long_balls": 1.4924,
                "accurate_long_balls": 0.7254,
                "total_own_half_passes": 6.8666,
                "accurate_own_half_passes": 6.1191,
                "total_opp_half_passes": 18.8507,
                "accurate_opp_half_passes": 15.0891,
                "crosses_total": 0.4978,
                "crosses_accurate": 0.0568,
                "touches": 36.8239,
                "possession_lost": 8.0892,
                "dispossessed": 1.4304,
                "duels_lost": 3.6802,
                "aerial_won": 1.0,
                "aerial_lost": 0.9104,
                "interceptions": 0.2435,
                "tackles_won": 0.1807,
                "tackles": 0.2713,
                "clearances": 0.3381,
                "total_contest": 1.2526,
                "won_contest": 0.8775,
                "challenges_lost": 0.4463,
                "fouls": 0.5555,
                "fouls_drawn": 1.5909,
                "blocks": 0.0083,
                "big_chances_created": 0.0505,
                "big_chances_missed": 0.0069,
                "xgot": 0.2837,
                "ball_carries": 11.8694,
                "total_progression": 24.6385,
                "progressive_carries": 1.316,
                "shots_off_target": 1.2334,
                "duel_xg_multiplier": 1.1946,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.552,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Crooks",
                "opponent_faced": "Matt Crooks",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Matt Crooks",
                  "matchup_zone": "CAM vs CM",
                  "duel_win_rate": 0.552,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.1946,
                  "skill_edge": 0.1924,
                  "height_edge": -0.06,
                  "attacker_skill": 0.865,
                  "defender_skill": 0.4374,
                  "attacker_role": "CAM",
                  "attacker_mv_price_index": 0.95,
                  "defender_adjusted_parts": [
                    {
                      "player": "Matt Crooks",
                      "market_value": 1000000,
                      "role": "CM",
                      "price_index": 0.9,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.1364
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.3971,
                  "after": 1.0
                },
                {
                  "stat": "totalShots",
                  "before": 1.5033,
                  "after": 1.7958
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.0325,
                  "after": 1.2334
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4703,
                  "after": 0.5618
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.2375,
                  "after": 0.2837
                },
                {
                  "stat": "goals",
                  "before": 0.1165,
                  "after": 0.1392
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1142,
                  "after": 0.1364
                }
              ]
            },
            {
              "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.9834,
                "expected_assists": 0.077,
                "assist_rate": 0.0703,
                "assists": 0,
                "expected_goals": 0.1364,
                "goal_rate": 0.1392,
                "goals": 0,
                "shots_on_target": 0.5618,
                "total_shots": 1.7958,
                "rating": 6.8025,
                "minutes": 71.46,
                "total_pass": 25.7173,
                "accurate_pass": 21.2083,
                "duels_won": 3.1306,
                "total_long_balls": 1.4924,
                "accurate_long_balls": 0.7254,
                "total_own_half_passes": 6.8666,
                "accurate_own_half_passes": 6.1191,
                "total_opp_half_passes": 18.8507,
                "accurate_opp_half_passes": 15.0891,
                "crosses_total": 0.4978,
                "crosses_accurate": 0.0568,
                "touches": 36.8239,
                "possession_lost": 8.0892,
                "dispossessed": 1.4304,
                "duels_lost": 3.6802,
                "aerial_won": 1.0,
                "aerial_lost": 0.9104,
                "interceptions": 0.2435,
                "tackles_won": 0.1807,
                "tackles": 0.2713,
                "clearances": 0.3381,
                "total_contest": 1.2526,
                "won_contest": 0.8775,
                "challenges_lost": 0.4463,
                "fouls": 0.5555,
                "fouls_drawn": 1.5909,
                "blocks": 0.0083,
                "big_chances_created": 0.0505,
                "big_chances_missed": 0.0069,
                "xgot": 0.2837,
                "ball_carries": 11.8694,
                "total_progression": 24.6385,
                "progressive_carries": 1.316,
                "shots_off_target": 1.2334,
                "duel_xg_multiplier": 1.1946,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.552,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Crooks",
                "opponent_faced": "Matt Crooks",
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "key_pass": 0.9834,
                "expected_assists": 0.0952,
                "assist_rate": 0.0703,
                "assists": 0,
                "expected_goals": 0.1812,
                "goal_rate": 0.1392,
                "goals": 0,
                "shots_on_target": 0.5618,
                "total_shots": 1.7958,
                "rating": 6.8025,
                "minutes": 71.46,
                "total_pass": 25.7173,
                "accurate_pass": 21.2083,
                "duels_won": 3.1306,
                "total_long_balls": 1.4924,
                "accurate_long_balls": 0.7254,
                "total_own_half_passes": 6.8666,
                "accurate_own_half_passes": 6.1191,
                "total_opp_half_passes": 18.8507,
                "accurate_opp_half_passes": 15.0891,
                "crosses_total": 0.4978,
                "crosses_accurate": 0.0568,
                "touches": 36.8239,
                "possession_lost": 8.0892,
                "dispossessed": 1.4304,
                "duels_lost": 3.6802,
                "aerial_won": 1.0,
                "aerial_lost": 0.9104,
                "interceptions": 0.2435,
                "tackles_won": 0.1807,
                "tackles": 0.2713,
                "clearances": 0.3381,
                "total_contest": 1.2526,
                "won_contest": 0.8775,
                "challenges_lost": 0.4463,
                "fouls": 0.5555,
                "fouls_drawn": 1.5909,
                "blocks": 0.0083,
                "big_chances_created": 0.0505,
                "big_chances_missed": 0.0069,
                "xgot": 0.3769,
                "ball_carries": 11.8694,
                "total_progression": 24.6385,
                "progressive_carries": 1.316,
                "shots_off_target": 1.2334,
                "duel_xg_multiplier": 1.1946,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.552,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Crooks",
                "opponent_faced": "Matt Crooks",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.015,
                "creation_factor": 0.9472
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1364,
                  "after": 0.1812
                },
                {
                  "stat": "expected_assists",
                  "before": 0.077,
                  "after": 0.0952
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 84.0)",
              "stats": {
                "key_pass": 0.9834,
                "expected_assists": 0.0952,
                "assist_rate": 0.0703,
                "assists": 0,
                "expected_goals": 0.1812,
                "goal_rate": 0.1392,
                "goals": 0,
                "shots_on_target": 0.5618,
                "total_shots": 1.7958,
                "rating": 6.8025,
                "minutes": 71.46,
                "total_pass": 25.7173,
                "accurate_pass": 21.2083,
                "duels_won": 3.1306,
                "total_long_balls": 1.4924,
                "accurate_long_balls": 0.7254,
                "total_own_half_passes": 6.8666,
                "accurate_own_half_passes": 6.1191,
                "total_opp_half_passes": 18.8507,
                "accurate_opp_half_passes": 15.0891,
                "crosses_total": 0.4978,
                "crosses_accurate": 0.0568,
                "touches": 36.8239,
                "possession_lost": 8.0892,
                "dispossessed": 1.4304,
                "duels_lost": 3.6802,
                "aerial_won": 1.0,
                "aerial_lost": 0.9104,
                "interceptions": 0.2435,
                "tackles_won": 0.1807,
                "tackles": 0.2713,
                "clearances": 0.3381,
                "total_contest": 1.2526,
                "won_contest": 0.8775,
                "challenges_lost": 0.4463,
                "fouls": 0.5555,
                "fouls_drawn": 1.5909,
                "blocks": 0.0083,
                "big_chances_created": 0.0505,
                "big_chances_missed": 0.0069,
                "xgot": 0.3769,
                "ball_carries": 11.8694,
                "total_progression": 24.6385,
                "progressive_carries": 1.316,
                "shots_off_target": 1.2334,
                "duel_xg_multiplier": 1.1946,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.552,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Crooks",
                "opponent_faced": "Matt Crooks",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.015,
                "creation_factor": 0.9472,
                "fifa_overall": 84.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": 475,
                "fifa_rank": 196.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 84.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.9834,
                "expected_assists": 0.0952,
                "assist_rate": 0.0703,
                "assists": 0,
                "expected_goals": 0.1812,
                "goal_rate": 0.1392,
                "goals": 0,
                "shots_on_target": 0.5618,
                "total_shots": 1.7958,
                "rating": 6.8025,
                "minutes": 71.46,
                "total_pass": 25.7173,
                "accurate_pass": 21.2083,
                "duels_won": 3.1306,
                "total_long_balls": 1.4924,
                "accurate_long_balls": 0.7254,
                "total_own_half_passes": 6.8666,
                "accurate_own_half_passes": 6.1191,
                "total_opp_half_passes": 18.8507,
                "accurate_opp_half_passes": 15.0891,
                "crosses_total": 0.4978,
                "crosses_accurate": 0.0568,
                "touches": 36.8239,
                "possession_lost": 8.0892,
                "dispossessed": 1.4304,
                "duels_lost": 3.6802,
                "aerial_won": 1.0,
                "aerial_lost": 0.9104,
                "interceptions": 0.2435,
                "tackles_won": 0.1807,
                "tackles": 0.2713,
                "clearances": 0.3381,
                "total_contest": 1.2526,
                "won_contest": 0.8775,
                "challenges_lost": 0.4463,
                "fouls": 0.5555,
                "fouls_drawn": 1.5909,
                "blocks": 0.0083,
                "big_chances_created": 0.0505,
                "big_chances_missed": 0.0069,
                "xgot": 0.3769,
                "ball_carries": 11.8694,
                "total_progression": 24.6385,
                "progressive_carries": 1.316,
                "shots_off_target": 1.2334,
                "duel_xg_multiplier": 1.1946,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.552,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Crooks",
                "opponent_faced": "Matt Crooks",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1657,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.015,
                "creation_factor": 0.9472,
                "fifa_overall": 84.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1657,
                "goal_rate": 0.1392,
                "scorer_weight": 0.1839,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0882,
                "finishing_factor": 1.015,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.9834,
                "expected_assists": 0.0952,
                "assist_rate": 0.0703,
                "assists": 0,
                "expected_goals": 0.1812,
                "goal_rate": 0.1392,
                "goals": 0,
                "shots_on_target": 0.5618,
                "total_shots": 1.7958,
                "rating": 6.8025,
                "minutes": 71.46,
                "total_pass": 25.7173,
                "accurate_pass": 21.2083,
                "duels_won": 3.1306,
                "total_long_balls": 1.4924,
                "accurate_long_balls": 0.7254,
                "total_own_half_passes": 6.8666,
                "accurate_own_half_passes": 6.1191,
                "total_opp_half_passes": 18.8507,
                "accurate_opp_half_passes": 15.0891,
                "crosses_total": 0.4978,
                "crosses_accurate": 0.0568,
                "touches": 36.8239,
                "possession_lost": 8.0892,
                "dispossessed": 1.4304,
                "duels_lost": 3.6802,
                "aerial_won": 1.0,
                "aerial_lost": 0.9104,
                "interceptions": 0.2435,
                "tackles_won": 0.1807,
                "tackles": 0.2713,
                "clearances": 0.3381,
                "total_contest": 1.2526,
                "won_contest": 0.8775,
                "challenges_lost": 0.4463,
                "fouls": 0.5555,
                "fouls_drawn": 1.5909,
                "blocks": 0.0083,
                "big_chances_created": 0.0505,
                "big_chances_missed": 0.0069,
                "xgot": 0.3769,
                "ball_carries": 11.8694,
                "total_progression": 24.6385,
                "progressive_carries": 1.316,
                "shots_off_target": 1.2334,
                "duel_xg_multiplier": 1.1946,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.552,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Crooks",
                "opponent_faced": "Matt Crooks",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1657,
                "projected_assists": 0,
                "assist_probability": 0.0908,
                "finishing_factor": 1.015,
                "creation_factor": 0.9472,
                "fifa_overall": 84.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0908,
                "assist_rate": 0.0703,
                "provider_weight": 0.0902,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0577,
                "creation_factor": 0.9472,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Bruno Guimarães": {
          "player_id": 866469,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 39,
          "height": 182,
          "market_value": 77000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1414,
            "assist_rate": 0.0989,
            "assists": 0,
            "expected_goals": 0.1073,
            "goal_rate": 0.0935,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 7.1115,
            "minutes": 79,
            "total_pass": 53,
            "accurate_pass": 45,
            "duels_won": 7,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 19,
            "total_opp_half_passes": 32,
            "accurate_opp_half_passes": 26,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 72,
            "possession_lost": 14.2662,
            "dispossessed": 1.5871,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 3,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2252,
            "ball_carries": 23,
            "total_progression": 54,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "opponent_faced": "Matt Crooks, Tim Iroegbunam",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "antagonist_source": "defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1017,
            "projected_assists": 0,
            "assist_probability": 0.1319,
            "finishing_factor": 1.0971,
            "creation_factor": 0.9063,
            "fifa_overall": 86.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363907.0,
              "match_date": "2026-11-01 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Liverpool",
              "away_team": "Arsenal",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Arsenal",
              "opponent": "Liverpool",
              "stats": {},
              "has_player_stats": false,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 22,
                "rating": 6.8,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.019,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 27,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 2,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 66,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0249,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 51,
                "tackles": 2,
                "clearances": 1,
                "aerial_won": 4,
                "duels_won": 10,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 27,
                "rating": 8.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0998,
                "expected_assists": 0.0655,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 20,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 60,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0089,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 33,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 45,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.092,
                "expected_assists": 0.1364,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 12,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 19,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0134,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 13,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965.0,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Fulham",
              "stats": {
                "minutes": 66,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0454,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 47,
                "accurate_pass": 40,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957.0,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0936,
                "expected_assists": 0.3626,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 68,
                "accurate_pass": 58,
                "tackles": 5,
                "tackles_won": 3,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 13,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023943.0,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 89,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4031,
                "expected_assists": 0.4201,
                "total_shots": 4,
                "shots_on_target": 3,
                "shots_off_target": 1,
                "total_pass": 70,
                "accurate_pass": 58,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 9,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 100,
            "combined_rank_score": 96.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 107.0,
            "sofascore_rating": 7.4517,
            "sofascore_appearances": 29.0,
            "fifa_rank": 85.0,
            "fifa_overall": 86.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.1115,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bruno Guimarães",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luka Stankovski",
                  "ranking": 95
                },
                {
                  "player_name": "Jordan Pickford",
                  "ranking": 96
                },
                {
                  "player_name": "Luke Brattan",
                  "ranking": 97
                },
                {
                  "player_name": "Moisés Caicedo",
                  "ranking": 98
                },
                {
                  "player_name": "Danrlei",
                  "ranking": 99
                }
              ],
              "lower": [
                {
                  "player_name": "Sandro Tonali",
                  "ranking": 101
                },
                {
                  "player_name": "José Sanhueza",
                  "ranking": 102
                },
                {
                  "player_name": "Fedor Lapoukhov",
                  "ranking": 103
                },
                {
                  "player_name": "Ramón Sosa",
                  "ranking": 104
                },
                {
                  "player_name": "Hakan Çalhanoğlu",
                  "ranking": 105
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 35,
          "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": 35,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.014,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "minutes": 20.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "XGBoost regressor (M_service) evaluated 35 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Arsenal, rel: 0.01, 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.3256,
                "expected_assists": 0.1128,
                "assists": 0.0976,
                "assist_rate": 0.0976,
                "expected_goals": 0.0796,
                "goals": 0.0923,
                "goal_rate": 0.0923,
                "shots_on_target": 0.317,
                "total_shots": 1.0102,
                "rating": 7.1115,
                "minutes": 79.26,
                "total_pass": 51.9336,
                "accurate_pass": 44.6527,
                "duels_won": 6.8966,
                "total_long_balls": 4.0179,
                "accurate_long_balls": 2.4033,
                "total_own_half_passes": 20.3453,
                "accurate_own_half_passes": 18.7218,
                "total_opp_half_passes": 31.5883,
                "accurate_opp_half_passes": 25.9309,
                "crosses_total": 3.1413,
                "crosses_accurate": 0.739,
                "touches": 71.151,
                "possession_lost": 14.0692,
                "dispossessed": 1.5652,
                "duels_lost": 4.6207,
                "aerial_won": 0.9151,
                "aerial_lost": 0.3518,
                "interceptions": 0.5476,
                "tackles_won": 1.096,
                "tackles": 1.8989,
                "clearances": 1.1282,
                "total_contest": 2.0992,
                "won_contest": 1.2126,
                "challenges_lost": 0.617,
                "fouls": 1.3304,
                "fouls_drawn": 2.87,
                "blocks": 0.4562,
                "big_chances_created": 0.2036,
                "big_chances_missed": 0.1328,
                "xgot": 0.1672,
                "ball_carries": 22.9619,
                "total_progression": 53.6974,
                "progressive_carries": 1.0535,
                "shots_off_target": 0.6932
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.1505,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1087,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0786,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.0668,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Fulham",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Nottingham Forest",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 7.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.8496,
                  "creative_index": 0.3561,
                  "expectedGoals": 0.0878,
                  "expectedAssists": 0.1131,
                  "keyPass": 0.7206
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.3255746364593506,
                    "model_output": 1.3256,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1415
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0872
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0672
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.063
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0599
                        }
                      ],
                      "others": 0.151,
                      "total": 1.3256,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.147481
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.081128
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.061943
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.058206
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.052373
                        }
                      ],
                      "others_margin": 0.120899
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.1127576231956482,
                    "model_output": 0.1128,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0104
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0091
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0083
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0043
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0039
                        }
                      ],
                      "others": 0.0007,
                      "total": 0.1128,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.115963
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.091028
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.076583
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.03913
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.035521
                        }
                      ],
                      "others_margin": 0.006445
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0976296216249466,
                    "model_output": 0.0976,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0077
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0068
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0059
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0057
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.005
                        }
                      ],
                      "others": 0.0032,
                      "total": 0.0976,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.086202
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.07101
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.060884
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.059047
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.051773
                        }
                      ],
                      "others_margin": 0.033297
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07964447885751724,
                    "model_output": 0.0796,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0116
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.01
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0065
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0054
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0047
                        }
                      ],
                      "others": -0.0066,
                      "total": 0.0796,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118645
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.101534
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.072619
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.063627
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.055648
                        }
                      ],
                      "others_margin": -0.078735
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.09228774160146713,
                    "model_output": 0.0923,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0122
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0097
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0088
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0069
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0066
                        }
                      ],
                      "others": -0.0083,
                      "total": 0.0923,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.138163
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.111479
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.091411
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": -0.071123
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.067753
                        }
                      ],
                      "others_margin": -0.085815
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.31698694825172424,
                    "model_output": 0.317,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0439
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.025
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.023
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0185
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0117
                        }
                      ],
                      "others": -0.0166,
                      "total": 0.317,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129285
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.066759
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.061346
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.052224
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.034358
                        }
                      ],
                      "others_margin": -0.050924
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.0101585388183594,
                    "model_output": 1.0102,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1475
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0421
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0389
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0354
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0316
                        }
                      ],
                      "others": -0.1082,
                      "total": 1.0102,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.147514
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.042117
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": -0.038889
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.035449
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.031553
                        }
                      ],
                      "others_margin": -0.108288
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.111543655395508,
                    "model_output": 7.1115,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.1217
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0803
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0275
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0233
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0224
                        }
                      ],
                      "others": -0.0211,
                      "total": 7.1115,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.121724
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.080303
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.027494
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.023255
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.022396
                        }
                      ],
                      "others_margin": -0.021032
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 35,
                  "role_matches": 29,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0140, quality 0.879)",
              "stats": {
                "key_pass": 1.3441,
                "expected_assists": 0.1143,
                "assists": 0.099,
                "assist_rate": 0.099,
                "expected_goals": 0.0808,
                "goals": 0.0936,
                "goal_rate": 0.0936,
                "shots_on_target": 0.3214,
                "total_shots": 1.0243,
                "rating": 7.1115,
                "minutes": 79.26,
                "total_pass": 52.6607,
                "accurate_pass": 45.2778,
                "duels_won": 6.9932,
                "total_long_balls": 4.0742,
                "accurate_long_balls": 2.4369,
                "total_own_half_passes": 20.6301,
                "accurate_own_half_passes": 18.9839,
                "total_opp_half_passes": 32.0305,
                "accurate_opp_half_passes": 26.2939,
                "crosses_total": 3.1853,
                "crosses_accurate": 0.7493,
                "touches": 72.1471,
                "possession_lost": 14.2662,
                "dispossessed": 1.5871,
                "duels_lost": 4.6854,
                "aerial_won": 0.9279,
                "aerial_lost": 0.3567,
                "interceptions": 0.5553,
                "tackles_won": 1.1113,
                "tackles": 1.9255,
                "clearances": 1.144,
                "total_contest": 2.1286,
                "won_contest": 1.2296,
                "challenges_lost": 0.6256,
                "fouls": 1.349,
                "fouls_drawn": 2.9102,
                "blocks": 0.4626,
                "big_chances_created": 0.2065,
                "big_chances_missed": 0.1347,
                "xgot": 0.1695,
                "ball_carries": 23.2834,
                "total_progression": 54.4492,
                "progressive_carries": 1.0682,
                "shots_off_target": 0.7029
              },
              "params": {
                "market_value_eur": 77000000,
                "quality_factor": 0.8792,
                "boost_factor": 1.014,
                "reference_quality": 0.505,
                "history_matches": 35,
                "history_shrink": 0.125,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0011)",
              "stats": {
                "key_pass": 1.3441,
                "expected_assists": 0.1143,
                "assists": 0.0989,
                "assist_rate": 0.0989,
                "expected_goals": 0.0808,
                "goals": 0.0935,
                "goal_rate": 0.0935,
                "shots_on_target": 0.3211,
                "total_shots": 1.0232,
                "rating": 7.1115,
                "minutes": 79.26,
                "total_pass": 52.6607,
                "accurate_pass": 45.2778,
                "duels_won": 6.9932,
                "total_long_balls": 4.0742,
                "accurate_long_balls": 2.4369,
                "total_own_half_passes": 20.6301,
                "accurate_own_half_passes": 18.9839,
                "total_opp_half_passes": 32.0305,
                "accurate_opp_half_passes": 26.2939,
                "crosses_total": 3.1819,
                "crosses_accurate": 0.7493,
                "touches": 72.1471,
                "possession_lost": 14.2662,
                "dispossessed": 1.5871,
                "duels_lost": 4.6854,
                "aerial_won": 0.9279,
                "aerial_lost": 0.3567,
                "interceptions": 0.5547,
                "tackles_won": 1.1101,
                "tackles": 1.9255,
                "clearances": 1.144,
                "total_contest": 2.1286,
                "won_contest": 1.2296,
                "challenges_lost": 0.6256,
                "fouls": 1.3475,
                "fouls_drawn": 2.9071,
                "blocks": 0.4626,
                "big_chances_created": 0.2065,
                "big_chances_missed": 0.1347,
                "xgot": 0.1695,
                "ball_carries": 23.2834,
                "total_progression": 54.4492,
                "progressive_carries": 1.0682,
                "shots_off_target": 0.7029
              },
              "params": {
                "blend_weight": 0.0011,
                "history_matches": 35,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8807,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Arsenal"
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.3441,
                "expected_assists": 0.1143,
                "assists": 0.0989,
                "assist_rate": 0.0989,
                "expected_goals": 0.0808,
                "goals": 0.0935,
                "goal_rate": 0.0935,
                "shots_on_target": 0.3211,
                "total_shots": 1.024,
                "rating": 7.1115,
                "minutes": 79.26,
                "total_pass": 52.6607,
                "accurate_pass": 45.2778,
                "duels_won": 6.9932,
                "total_long_balls": 4.0742,
                "accurate_long_balls": 2.4369,
                "total_own_half_passes": 20.6301,
                "accurate_own_half_passes": 18.9839,
                "total_opp_half_passes": 32.0305,
                "accurate_opp_half_passes": 26.2939,
                "crosses_total": 3.1819,
                "crosses_accurate": 0.7493,
                "touches": 72.1471,
                "possession_lost": 14.2662,
                "dispossessed": 1.5871,
                "duels_lost": 4.6854,
                "aerial_won": 0.9279,
                "aerial_lost": 0.3567,
                "interceptions": 0.5547,
                "tackles_won": 1.1101,
                "tackles": 1.9255,
                "clearances": 1.144,
                "total_contest": 2.1286,
                "won_contest": 1.2296,
                "challenges_lost": 0.6256,
                "fouls": 1.3475,
                "fouls_drawn": 2.9071,
                "blocks": 0.4626,
                "big_chances_created": 0.2065,
                "big_chances_missed": 0.1347,
                "xgot": 0.1695,
                "ball_carries": 23.2834,
                "total_progression": 54.4492,
                "progressive_carries": 1.0682,
                "shots_off_target": 0.7029
              },
              "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.3441,
                "expected_assists": 0.1143,
                "assists": 0.0989,
                "assist_rate": 0.0989,
                "expected_goals": 0.0808,
                "goals": 0.0935,
                "goal_rate": 0.0935,
                "shots_on_target": 0.3211,
                "total_shots": 1.024,
                "rating": 7.1115,
                "minutes": 79.26,
                "total_pass": 52.6607,
                "accurate_pass": 45.2778,
                "duels_won": 6.9932,
                "total_long_balls": 4.0742,
                "accurate_long_balls": 2.4369,
                "total_own_half_passes": 20.6301,
                "accurate_own_half_passes": 18.9839,
                "total_opp_half_passes": 32.0305,
                "accurate_opp_half_passes": 26.2939,
                "crosses_total": 3.1819,
                "crosses_accurate": 0.7493,
                "touches": 72.1471,
                "possession_lost": 14.2662,
                "dispossessed": 1.5871,
                "duels_lost": 4.6854,
                "aerial_won": 0.9279,
                "aerial_lost": 0.3567,
                "interceptions": 0.5547,
                "tackles_won": 1.1101,
                "tackles": 1.9255,
                "clearances": 1.144,
                "total_contest": 2.1286,
                "won_contest": 1.2296,
                "challenges_lost": 0.6256,
                "fouls": 1.3475,
                "fouls_drawn": 2.9071,
                "blocks": 0.4626,
                "big_chances_created": 0.2065,
                "big_chances_missed": 0.1347,
                "xgot": 0.1695,
                "ball_carries": 23.2834,
                "total_progression": 54.4492,
                "progressive_carries": 1.0682,
                "shots_off_target": 0.7029,
                "opponent_faced": "Matt Crooks, Tim Iroegbunam",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Matt Crooks, Tim Iroegbunam",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel"
                }
              }
            },
            {
              "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.3441,
                "expected_assists": 0.1143,
                "assist_rate": 0.0989,
                "assists": 0,
                "expected_goals": 0.0808,
                "goal_rate": 0.0935,
                "goals": 0,
                "shots_on_target": 0.3211,
                "total_shots": 1.024,
                "rating": 7.1115,
                "minutes": 79.26,
                "total_pass": 52.6607,
                "accurate_pass": 45.2778,
                "duels_won": 6.9932,
                "total_long_balls": 4.0742,
                "accurate_long_balls": 2.4369,
                "total_own_half_passes": 20.6301,
                "accurate_own_half_passes": 18.9839,
                "total_opp_half_passes": 32.0305,
                "accurate_opp_half_passes": 26.2939,
                "crosses_total": 3.1819,
                "crosses_accurate": 0.7493,
                "touches": 72.1471,
                "possession_lost": 14.2662,
                "dispossessed": 1.5871,
                "duels_lost": 4.6854,
                "aerial_won": 0.9279,
                "aerial_lost": 0.3567,
                "interceptions": 0.5547,
                "tackles_won": 1.1101,
                "tackles": 1.9255,
                "clearances": 1.144,
                "total_contest": 2.1286,
                "won_contest": 1.2296,
                "challenges_lost": 0.6256,
                "fouls": 1.3475,
                "fouls_drawn": 2.9071,
                "blocks": 0.4626,
                "big_chances_created": 0.2065,
                "big_chances_missed": 0.1347,
                "xgot": 0.1695,
                "ball_carries": 23.2834,
                "total_progression": 54.4492,
                "progressive_carries": 1.0682,
                "shots_off_target": 0.7029,
                "opponent_faced": "Matt Crooks, Tim Iroegbunam",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "key_pass": 1.3441,
                "expected_assists": 0.1414,
                "assist_rate": 0.0989,
                "assists": 0,
                "expected_goals": 0.1073,
                "goal_rate": 0.0935,
                "goals": 0,
                "shots_on_target": 0.3211,
                "total_shots": 1.024,
                "rating": 7.1115,
                "minutes": 79.26,
                "total_pass": 52.6607,
                "accurate_pass": 45.2778,
                "duels_won": 6.9932,
                "total_long_balls": 4.0742,
                "accurate_long_balls": 2.4369,
                "total_own_half_passes": 20.6301,
                "accurate_own_half_passes": 18.9839,
                "total_opp_half_passes": 32.0305,
                "accurate_opp_half_passes": 26.2939,
                "crosses_total": 3.1819,
                "crosses_accurate": 0.7493,
                "touches": 72.1471,
                "possession_lost": 14.2662,
                "dispossessed": 1.5871,
                "duels_lost": 4.6854,
                "aerial_won": 0.9279,
                "aerial_lost": 0.3567,
                "interceptions": 0.5547,
                "tackles_won": 1.1101,
                "tackles": 1.9255,
                "clearances": 1.144,
                "total_contest": 2.1286,
                "won_contest": 1.2296,
                "challenges_lost": 0.6256,
                "fouls": 1.3475,
                "fouls_drawn": 2.9071,
                "blocks": 0.4626,
                "big_chances_created": 0.2065,
                "big_chances_missed": 0.1347,
                "xgot": 0.2252,
                "ball_carries": 23.2834,
                "total_progression": 54.4492,
                "progressive_carries": 1.0682,
                "shots_off_target": 0.7029,
                "opponent_faced": "Matt Crooks, Tim Iroegbunam",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0971,
                "creation_factor": 0.9063
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0808,
                  "after": 0.1073
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1143,
                  "after": 0.1414
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 86.0)",
              "stats": {
                "key_pass": 1.3441,
                "expected_assists": 0.1414,
                "assist_rate": 0.0989,
                "assists": 0,
                "expected_goals": 0.1073,
                "goal_rate": 0.0935,
                "goals": 0,
                "shots_on_target": 0.3211,
                "total_shots": 1.024,
                "rating": 7.1115,
                "minutes": 79.26,
                "total_pass": 52.6607,
                "accurate_pass": 45.2778,
                "duels_won": 6.9932,
                "total_long_balls": 4.0742,
                "accurate_long_balls": 2.4369,
                "total_own_half_passes": 20.6301,
                "accurate_own_half_passes": 18.9839,
                "total_opp_half_passes": 32.0305,
                "accurate_opp_half_passes": 26.2939,
                "crosses_total": 3.1819,
                "crosses_accurate": 0.7493,
                "touches": 72.1471,
                "possession_lost": 14.2662,
                "dispossessed": 1.5871,
                "duels_lost": 4.6854,
                "aerial_won": 0.9279,
                "aerial_lost": 0.3567,
                "interceptions": 0.5547,
                "tackles_won": 1.1101,
                "tackles": 1.9255,
                "clearances": 1.144,
                "total_contest": 2.1286,
                "won_contest": 1.2296,
                "challenges_lost": 0.6256,
                "fouls": 1.3475,
                "fouls_drawn": 2.9071,
                "blocks": 0.4626,
                "big_chances_created": 0.2065,
                "big_chances_missed": 0.1347,
                "xgot": 0.2252,
                "ball_carries": 23.2834,
                "total_progression": 54.4492,
                "progressive_carries": 1.0682,
                "shots_off_target": 0.7029,
                "opponent_faced": "Matt Crooks, Tim Iroegbunam",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0971,
                "creation_factor": 0.9063,
                "fifa_overall": 86.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": 100,
                "fifa_rank": 85.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 86.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.3441,
                "expected_assists": 0.1414,
                "assist_rate": 0.0989,
                "assists": 0,
                "expected_goals": 0.1073,
                "goal_rate": 0.0935,
                "goals": 0,
                "shots_on_target": 0.3211,
                "total_shots": 1.024,
                "rating": 7.1115,
                "minutes": 79.26,
                "total_pass": 52.6607,
                "accurate_pass": 45.2778,
                "duels_won": 6.9932,
                "total_long_balls": 4.0742,
                "accurate_long_balls": 2.4369,
                "total_own_half_passes": 20.6301,
                "accurate_own_half_passes": 18.9839,
                "total_opp_half_passes": 32.0305,
                "accurate_opp_half_passes": 26.2939,
                "crosses_total": 3.1819,
                "crosses_accurate": 0.7493,
                "touches": 72.1471,
                "possession_lost": 14.2662,
                "dispossessed": 1.5871,
                "duels_lost": 4.6854,
                "aerial_won": 0.9279,
                "aerial_lost": 0.3567,
                "interceptions": 0.5547,
                "tackles_won": 1.1101,
                "tackles": 1.9255,
                "clearances": 1.144,
                "total_contest": 2.1286,
                "won_contest": 1.2296,
                "challenges_lost": 0.6256,
                "fouls": 1.3475,
                "fouls_drawn": 2.9071,
                "blocks": 0.4626,
                "big_chances_created": 0.2065,
                "big_chances_missed": 0.1347,
                "xgot": 0.2252,
                "ball_carries": 23.2834,
                "total_progression": 54.4492,
                "progressive_carries": 1.0682,
                "shots_off_target": 0.7029,
                "opponent_faced": "Matt Crooks, Tim Iroegbunam",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1017,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0971,
                "creation_factor": 0.9063,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1017,
                "goal_rate": 0.0935,
                "scorer_weight": 0.1177,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0564,
                "finishing_factor": 1.0971,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.3441,
                "expected_assists": 0.1414,
                "assist_rate": 0.0989,
                "assists": 0,
                "expected_goals": 0.1073,
                "goal_rate": 0.0935,
                "goals": 0,
                "shots_on_target": 0.3211,
                "total_shots": 1.024,
                "rating": 7.1115,
                "minutes": 79.26,
                "total_pass": 52.6607,
                "accurate_pass": 45.2778,
                "duels_won": 6.9932,
                "total_long_balls": 4.0742,
                "accurate_long_balls": 2.4369,
                "total_own_half_passes": 20.6301,
                "accurate_own_half_passes": 18.9839,
                "total_opp_half_passes": 32.0305,
                "accurate_opp_half_passes": 26.2939,
                "crosses_total": 3.1819,
                "crosses_accurate": 0.7493,
                "touches": 72.1471,
                "possession_lost": 14.2662,
                "dispossessed": 1.5871,
                "duels_lost": 4.6854,
                "aerial_won": 0.9279,
                "aerial_lost": 0.3567,
                "interceptions": 0.5547,
                "tackles_won": 1.1101,
                "tackles": 1.9255,
                "clearances": 1.144,
                "total_contest": 2.1286,
                "won_contest": 1.2296,
                "challenges_lost": 0.6256,
                "fouls": 1.3475,
                "fouls_drawn": 2.9071,
                "blocks": 0.4626,
                "big_chances_created": 0.2065,
                "big_chances_missed": 0.1347,
                "xgot": 0.2252,
                "ball_carries": 23.2834,
                "total_progression": 54.4492,
                "progressive_carries": 1.0682,
                "shots_off_target": 0.7029,
                "opponent_faced": "Matt Crooks, Tim Iroegbunam",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1017,
                "projected_assists": 0,
                "assist_probability": 0.1319,
                "finishing_factor": 1.0971,
                "creation_factor": 0.9063,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1319,
                "assist_rate": 0.0989,
                "provider_weight": 0.1282,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0821,
                "creation_factor": 0.9063,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Mikel Merino": {
          "player_id": 592010,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 23,
          "height": 188,
          "market_value": 26000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0823,
            "assist_rate": 0.0526,
            "assists": 0,
            "expected_goals": 0.1977,
            "goal_rate": 0.1301,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 6.8181,
            "minutes": 77,
            "total_pass": 26,
            "accurate_pass": 20,
            "duels_won": 5,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 13,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 39,
            "possession_lost": 9.3119,
            "dispossessed": 1.5856,
            "duels_lost": 7,
            "aerial_won": 2,
            "aerial_lost": 3,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1922,
            "ball_carries": 7,
            "total_progression": 15,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "opponent_faced": "Regan Slater",
            "matchup_zone": "Midfield lane",
            "antagonist_source": "midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1794,
            "projected_assists": 0,
            "assist_probability": 0.079,
            "finishing_factor": 0.9059,
            "creation_factor": 0.8807,
            "fifa_overall": 83.0
          },
          "latest_10_games": [
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 68,
                "rating": 6.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5245,
                "expected_assists": 0.0686,
                "total_shots": 5,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 25,
                "accurate_pass": 19,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 4,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0891,
                "expected_assists": 0.0068,
                "total_shots": 1,
                "total_pass": 22,
                "accurate_pass": 19,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 30,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1251,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 17,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 13,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0049,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 19,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0041,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 14,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 14,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1449,
                "expected_assists": 0.0177,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 12,
                "accurate_pass": 11,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 28,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3706,
                "expected_assists": 0.0038,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 12,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025098.0,
              "match_date": "2026-01-25",
              "home_team": "Arsenal",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 32,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4905,
                "expected_assists": 0.018,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 12,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 179,
            "combined_rank_score": 150.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 29.0,
            "sofascore_rating": 8.0167,
            "sofascore_appearances": 6.0,
            "fifa_rank": 272.0,
            "fifa_overall": 83.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8181,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mikel Merino",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Dostonbek Khamdamov",
                  "ranking": 174
                },
                {
                  "player_name": "Deniz Undav",
                  "ranking": 175
                },
                {
                  "player_name": "Enzo Fernández",
                  "ranking": 176
                },
                {
                  "player_name": "Rey Manaj",
                  "ranking": 177
                },
                {
                  "player_name": "Seon-min Kim",
                  "ranking": 178
                }
              ],
              "lower": [
                {
                  "player_name": "Gabriel Honório",
                  "ranking": 180
                },
                {
                  "player_name": "Giovino Flamarion",
                  "ranking": 181
                },
                {
                  "player_name": "Adrien Rabiot",
                  "ranking": 182
                },
                {
                  "player_name": "Marcus Thuram",
                  "ranking": 183
                },
                {
                  "player_name": "Adenis Shala",
                  "ranking": 184
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.754,
          "history_matches": 30,
          "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": 30,
            "data_confidence": 0.754,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0078,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "minutes": 35.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 5.14,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.0267
            },
            "rationale": "XGBoost regressor (M_service) evaluated 30 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Arsenal, 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.8146,
                "expected_assists": 0.066,
                "assists": 0.0523,
                "assist_rate": 0.0523,
                "expected_goals": 0.1477,
                "goals": 0.1293,
                "goal_rate": 0.1293,
                "shots_on_target": 0.5197,
                "total_shots": 1.721,
                "rating": 6.8181,
                "minutes": 77.03,
                "total_pass": 26.1105,
                "accurate_pass": 20.1431,
                "duels_won": 5.2237,
                "total_long_balls": 1.1205,
                "accurate_long_balls": 0.4482,
                "total_own_half_passes": 7.7591,
                "accurate_own_half_passes": 6.8948,
                "total_opp_half_passes": 18.3513,
                "accurate_opp_half_passes": 13.2483,
                "crosses_total": 0.2836,
                "crosses_accurate": 0.0,
                "touches": 39.062,
                "possession_lost": 9.2398,
                "dispossessed": 1.5733,
                "duels_lost": 6.6571,
                "aerial_won": 1.554,
                "aerial_lost": 3.3388,
                "interceptions": 0.6071,
                "tackles_won": 0.9265,
                "tackles": 1.765,
                "clearances": 1.0532,
                "total_contest": 0.7215,
                "won_contest": 0.3595,
                "challenges_lost": 0.2149,
                "fouls": 1.356,
                "fouls_drawn": 1.5453,
                "blocks": 0.1358,
                "big_chances_created": 0.2653,
                "big_chances_missed": 0.3874,
                "xgot": 0.1436,
                "ball_carries": 6.5865,
                "total_progression": 14.6973,
                "progressive_carries": 0.9504,
                "shots_off_target": 1.2013
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.1512,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1285,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.1092,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0928,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0789,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0671,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.057,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0485,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0412,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-01-25",
                    "opponent": "Manchester United",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.035,
                    "rating": 7.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.3338,
                  "creative_index": 0.0895,
                  "expectedGoals": 0.1555,
                  "expectedAssists": 0.0468,
                  "keyPass": 0.1534
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8145824074745178,
                    "model_output": 0.8146,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1502
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.108
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0805
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0439
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0379
                        }
                      ],
                      "others": 0.0445,
                      "total": 0.8146,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.1559
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.109617
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.090319
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.052933
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.048079
                        }
                      ],
                      "others_margin": 0.056266
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06602743268013,
                    "model_output": 0.066,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0141
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0112
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0075
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0046
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0034
                        }
                      ],
                      "others": -0.0003,
                      "total": 0.066,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.182453
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.147708
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.095703
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.063826
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.050126
                        }
                      ],
                      "others_margin": -0.004362
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.05228058621287346,
                    "model_output": 0.0523,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": -0.0092
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0079
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0061
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0046
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0137,
                      "total": 0.0523,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": -0.113858
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.109996
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.08528
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.064295
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.052375
                        }
                      ],
                      "others_margin": -0.232414
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.14767836034297943,
                    "model_output": 0.1477,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0251
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0123
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0129
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0067
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0042
                        }
                      ],
                      "others": -0.0053,
                      "total": 0.1477,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.241851
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.100252
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.095006
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.045947
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.028043
                        }
                      ],
                      "others_margin": -0.035855
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.1293458193540573,
                    "model_output": 0.1293,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0211
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0174
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0171
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0165
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0085
                        }
                      ],
                      "others": -0.0129,
                      "total": 0.1293,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.201649
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.140101
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.121095
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.116335
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.061561
                        }
                      ],
                      "others_margin": -0.094951
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5197045207023621,
                    "model_output": 0.5197,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0824
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0552
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0612
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0402
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0297
                        }
                      ],
                      "others": -0.0075,
                      "total": 0.5197,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.230499
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.129221
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.126002
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.074938
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.054824
                        }
                      ],
                      "others_margin": -0.014244
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.7209997177124023,
                    "model_output": 1.721,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.357
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1642
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.0573
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0517
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0484
                        }
                      ],
                      "others": 0.0575,
                      "total": 1.721,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.356986
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.164195
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.057348
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.051735
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.04837
                        }
                      ],
                      "others_margin": 0.057431
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.818149566650391,
                    "model_output": 6.8181,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0452
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0357
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0285
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0212
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": 0.0123
                        }
                      ],
                      "others": -0.0348,
                      "total": 6.8181,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.045207
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.035741
                        },
                        {
                          "name": "rating",
                          "margin": -0.028532
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.021154
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": 0.012287
                        }
                      ],
                      "others_margin": -0.034698
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 30,
                  "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.0078, quality 0.686)",
              "stats": {
                "key_pass": 0.8209,
                "expected_assists": 0.0665,
                "assists": 0.0527,
                "assist_rate": 0.0527,
                "expected_goals": 0.1488,
                "goals": 0.1304,
                "goal_rate": 0.1304,
                "shots_on_target": 0.5238,
                "total_shots": 1.7345,
                "rating": 6.8181,
                "minutes": 77.03,
                "total_pass": 26.3142,
                "accurate_pass": 20.3002,
                "duels_won": 5.2644,
                "total_long_balls": 1.1292,
                "accurate_long_balls": 0.4517,
                "total_own_half_passes": 7.8196,
                "accurate_own_half_passes": 6.9486,
                "total_opp_half_passes": 18.4944,
                "accurate_opp_half_passes": 13.3516,
                "crosses_total": 0.2858,
                "crosses_accurate": 0.0,
                "touches": 39.3667,
                "possession_lost": 9.3119,
                "dispossessed": 1.5856,
                "duels_lost": 6.709,
                "aerial_won": 1.5661,
                "aerial_lost": 3.3648,
                "interceptions": 0.6118,
                "tackles_won": 0.9337,
                "tackles": 1.7788,
                "clearances": 1.0614,
                "total_contest": 0.7271,
                "won_contest": 0.3623,
                "challenges_lost": 0.2166,
                "fouls": 1.3666,
                "fouls_drawn": 1.5574,
                "blocks": 0.1369,
                "big_chances_created": 0.2674,
                "big_chances_missed": 0.3904,
                "xgot": 0.1447,
                "ball_carries": 6.6379,
                "total_progression": 14.8119,
                "progressive_carries": 0.9578,
                "shots_off_target": 1.2107
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0078,
                "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.0025)",
              "stats": {
                "key_pass": 0.8209,
                "expected_assists": 0.0665,
                "assists": 0.0526,
                "assist_rate": 0.0526,
                "expected_goals": 0.1488,
                "goals": 0.1301,
                "goal_rate": 0.1301,
                "shots_on_target": 0.528,
                "total_shots": 1.7411,
                "rating": 6.8181,
                "minutes": 77.03,
                "total_pass": 26.3142,
                "accurate_pass": 20.3002,
                "duels_won": 5.2644,
                "total_long_balls": 1.1292,
                "accurate_long_balls": 0.4517,
                "total_own_half_passes": 7.8196,
                "accurate_own_half_passes": 6.9486,
                "total_opp_half_passes": 18.4944,
                "accurate_opp_half_passes": 13.3516,
                "crosses_total": 0.2851,
                "crosses_accurate": 0.0,
                "touches": 39.3667,
                "possession_lost": 9.3119,
                "dispossessed": 1.5856,
                "duels_lost": 6.709,
                "aerial_won": 1.5661,
                "aerial_lost": 3.3648,
                "interceptions": 0.6103,
                "tackles_won": 0.9314,
                "tackles": 1.7788,
                "clearances": 1.0614,
                "total_contest": 0.7271,
                "won_contest": 0.3623,
                "challenges_lost": 0.2166,
                "fouls": 1.3791,
                "fouls_drawn": 1.5641,
                "blocks": 0.1369,
                "big_chances_created": 0.2674,
                "big_chances_missed": 0.3904,
                "xgot": 0.1447,
                "ball_carries": 6.6379,
                "total_progression": 14.8119,
                "progressive_carries": 0.9578,
                "shots_off_target": 1.2107
              },
              "params": {
                "blend_weight": 0.0025,
                "history_matches": 30,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8559,
                "prior_reliability": 0.0267,
                "competition": "Premier League",
                "squad": "Arsenal"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.3666,
                  "after": 1.3791
                },
                {
                  "stat": "wasFouled",
                  "before": 1.5574,
                  "after": 1.5641
                },
                {
                  "stat": "totalShots",
                  "before": 1.7345,
                  "after": 1.7411
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.8209,
                "expected_assists": 0.0665,
                "assists": 0.0526,
                "assist_rate": 0.0526,
                "expected_goals": 0.1488,
                "goals": 0.1301,
                "goal_rate": 0.1301,
                "shots_on_target": 0.528,
                "total_shots": 1.7411,
                "rating": 6.8181,
                "minutes": 77.03,
                "total_pass": 26.3142,
                "accurate_pass": 20.3002,
                "duels_won": 5.2644,
                "total_long_balls": 1.1292,
                "accurate_long_balls": 0.4517,
                "total_own_half_passes": 7.8196,
                "accurate_own_half_passes": 6.9486,
                "total_opp_half_passes": 18.4944,
                "accurate_opp_half_passes": 13.3516,
                "crosses_total": 0.2851,
                "crosses_accurate": 0.0,
                "touches": 39.3667,
                "possession_lost": 9.3119,
                "dispossessed": 1.5856,
                "duels_lost": 6.709,
                "aerial_won": 1.5661,
                "aerial_lost": 3.3648,
                "interceptions": 0.6103,
                "tackles_won": 0.9314,
                "tackles": 1.7788,
                "clearances": 1.0614,
                "total_contest": 0.7271,
                "won_contest": 0.3623,
                "challenges_lost": 0.2166,
                "fouls": 1.3791,
                "fouls_drawn": 1.5641,
                "blocks": 0.1369,
                "big_chances_created": 0.2674,
                "big_chances_missed": 0.3904,
                "xgot": 0.1447,
                "ball_carries": 6.6379,
                "total_progression": 14.8119,
                "progressive_carries": 0.9578,
                "shots_off_target": 1.2107
              },
              "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.8209,
                "expected_assists": 0.0665,
                "assists": 0.0526,
                "assist_rate": 0.0526,
                "expected_goals": 0.1488,
                "goals": 0.1301,
                "goal_rate": 0.1301,
                "shots_on_target": 0.528,
                "total_shots": 1.7411,
                "rating": 6.8181,
                "minutes": 77.03,
                "total_pass": 26.3142,
                "accurate_pass": 20.3002,
                "duels_won": 5.2644,
                "total_long_balls": 1.1292,
                "accurate_long_balls": 0.4517,
                "total_own_half_passes": 7.8196,
                "accurate_own_half_passes": 6.9486,
                "total_opp_half_passes": 18.4944,
                "accurate_opp_half_passes": 13.3516,
                "crosses_total": 0.2851,
                "crosses_accurate": 0.0,
                "touches": 39.3667,
                "possession_lost": 9.3119,
                "dispossessed": 1.5856,
                "duels_lost": 6.709,
                "aerial_won": 1.5661,
                "aerial_lost": 3.3648,
                "interceptions": 0.6103,
                "tackles_won": 0.9314,
                "tackles": 1.7788,
                "clearances": 1.0614,
                "total_contest": 0.7271,
                "won_contest": 0.3623,
                "challenges_lost": 0.2166,
                "fouls": 1.3791,
                "fouls_drawn": 1.5641,
                "blocks": 0.1369,
                "big_chances_created": 0.2674,
                "big_chances_missed": 0.3904,
                "xgot": 0.1447,
                "ball_carries": 6.6379,
                "total_progression": 14.8119,
                "progressive_carries": 0.9578,
                "shots_off_target": 1.2107,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Regan Slater",
                  "matchup_zone": "Midfield lane"
                }
              }
            },
            {
              "step": "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.8209,
                "expected_assists": 0.0665,
                "assist_rate": 0.0526,
                "assists": 0,
                "expected_goals": 0.1488,
                "goal_rate": 0.1301,
                "goals": 0,
                "shots_on_target": 0.528,
                "total_shots": 1.7411,
                "rating": 6.8181,
                "minutes": 77.03,
                "total_pass": 26.3142,
                "accurate_pass": 20.3002,
                "duels_won": 5.2644,
                "total_long_balls": 1.1292,
                "accurate_long_balls": 0.4517,
                "total_own_half_passes": 7.8196,
                "accurate_own_half_passes": 6.9486,
                "total_opp_half_passes": 18.4944,
                "accurate_opp_half_passes": 13.3516,
                "crosses_total": 0.2851,
                "crosses_accurate": 0.0,
                "touches": 39.3667,
                "possession_lost": 9.3119,
                "dispossessed": 1.5856,
                "duels_lost": 6.709,
                "aerial_won": 1.5661,
                "aerial_lost": 3.3648,
                "interceptions": 0.6103,
                "tackles_won": 0.9314,
                "tackles": 1.7788,
                "clearances": 1.0614,
                "total_contest": 0.7271,
                "won_contest": 0.3623,
                "challenges_lost": 0.2166,
                "fouls": 1.3791,
                "fouls_drawn": 1.5641,
                "blocks": 0.1369,
                "big_chances_created": 0.2674,
                "big_chances_missed": 0.3904,
                "xgot": 0.1447,
                "ball_carries": 6.6379,
                "total_progression": 14.8119,
                "progressive_carries": 0.9578,
                "shots_off_target": 1.2107,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "key_pass": 0.8209,
                "expected_assists": 0.0823,
                "assist_rate": 0.0526,
                "assists": 0,
                "expected_goals": 0.1977,
                "goal_rate": 0.1301,
                "goals": 0,
                "shots_on_target": 0.528,
                "total_shots": 1.7411,
                "rating": 6.8181,
                "minutes": 77.03,
                "total_pass": 26.3142,
                "accurate_pass": 20.3002,
                "duels_won": 5.2644,
                "total_long_balls": 1.1292,
                "accurate_long_balls": 0.4517,
                "total_own_half_passes": 7.8196,
                "accurate_own_half_passes": 6.9486,
                "total_opp_half_passes": 18.4944,
                "accurate_opp_half_passes": 13.3516,
                "crosses_total": 0.2851,
                "crosses_accurate": 0.0,
                "touches": 39.3667,
                "possession_lost": 9.3119,
                "dispossessed": 1.5856,
                "duels_lost": 6.709,
                "aerial_won": 1.5661,
                "aerial_lost": 3.3648,
                "interceptions": 0.6103,
                "tackles_won": 0.9314,
                "tackles": 1.7788,
                "clearances": 1.0614,
                "total_contest": 0.7271,
                "won_contest": 0.3623,
                "challenges_lost": 0.2166,
                "fouls": 1.3791,
                "fouls_drawn": 1.5641,
                "blocks": 0.1369,
                "big_chances_created": 0.2674,
                "big_chances_missed": 0.3904,
                "xgot": 0.1922,
                "ball_carries": 6.6379,
                "total_progression": 14.8119,
                "progressive_carries": 0.9578,
                "shots_off_target": 1.2107,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9059,
                "creation_factor": 0.8807
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1488,
                  "after": 0.1977
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0665,
                  "after": 0.0823
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 83.0)",
              "stats": {
                "key_pass": 0.8209,
                "expected_assists": 0.0823,
                "assist_rate": 0.0526,
                "assists": 0,
                "expected_goals": 0.1977,
                "goal_rate": 0.1301,
                "goals": 0,
                "shots_on_target": 0.528,
                "total_shots": 1.7411,
                "rating": 6.8181,
                "minutes": 77.03,
                "total_pass": 26.3142,
                "accurate_pass": 20.3002,
                "duels_won": 5.2644,
                "total_long_balls": 1.1292,
                "accurate_long_balls": 0.4517,
                "total_own_half_passes": 7.8196,
                "accurate_own_half_passes": 6.9486,
                "total_opp_half_passes": 18.4944,
                "accurate_opp_half_passes": 13.3516,
                "crosses_total": 0.2851,
                "crosses_accurate": 0.0,
                "touches": 39.3667,
                "possession_lost": 9.3119,
                "dispossessed": 1.5856,
                "duels_lost": 6.709,
                "aerial_won": 1.5661,
                "aerial_lost": 3.3648,
                "interceptions": 0.6103,
                "tackles_won": 0.9314,
                "tackles": 1.7788,
                "clearances": 1.0614,
                "total_contest": 0.7271,
                "won_contest": 0.3623,
                "challenges_lost": 0.2166,
                "fouls": 1.3791,
                "fouls_drawn": 1.5641,
                "blocks": 0.1369,
                "big_chances_created": 0.2674,
                "big_chances_missed": 0.3904,
                "xgot": 0.1922,
                "ball_carries": 6.6379,
                "total_progression": 14.8119,
                "progressive_carries": 0.9578,
                "shots_off_target": 1.2107,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9059,
                "creation_factor": 0.8807,
                "fifa_overall": 83.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": 179,
                "fifa_rank": 272.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 83.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.8209,
                "expected_assists": 0.0823,
                "assist_rate": 0.0526,
                "assists": 0,
                "expected_goals": 0.1977,
                "goal_rate": 0.1301,
                "goals": 0,
                "shots_on_target": 0.528,
                "total_shots": 1.7411,
                "rating": 6.8181,
                "minutes": 77.03,
                "total_pass": 26.3142,
                "accurate_pass": 20.3002,
                "duels_won": 5.2644,
                "total_long_balls": 1.1292,
                "accurate_long_balls": 0.4517,
                "total_own_half_passes": 7.8196,
                "accurate_own_half_passes": 6.9486,
                "total_opp_half_passes": 18.4944,
                "accurate_opp_half_passes": 13.3516,
                "crosses_total": 0.2851,
                "crosses_accurate": 0.0,
                "touches": 39.3667,
                "possession_lost": 9.3119,
                "dispossessed": 1.5856,
                "duels_lost": 6.709,
                "aerial_won": 1.5661,
                "aerial_lost": 3.3648,
                "interceptions": 0.6103,
                "tackles_won": 0.9314,
                "tackles": 1.7788,
                "clearances": 1.0614,
                "total_contest": 0.7271,
                "won_contest": 0.3623,
                "challenges_lost": 0.2166,
                "fouls": 1.3791,
                "fouls_drawn": 1.5641,
                "blocks": 0.1369,
                "big_chances_created": 0.2674,
                "big_chances_missed": 0.3904,
                "xgot": 0.1922,
                "ball_carries": 6.6379,
                "total_progression": 14.8119,
                "progressive_carries": 0.9578,
                "shots_off_target": 1.2107,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1794,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9059,
                "creation_factor": 0.8807,
                "fifa_overall": 83.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1794,
                "goal_rate": 0.1301,
                "scorer_weight": 0.1791,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0859,
                "finishing_factor": 0.9059,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.8209,
                "expected_assists": 0.0823,
                "assist_rate": 0.0526,
                "assists": 0,
                "expected_goals": 0.1977,
                "goal_rate": 0.1301,
                "goals": 0,
                "shots_on_target": 0.528,
                "total_shots": 1.7411,
                "rating": 6.8181,
                "minutes": 77.03,
                "total_pass": 26.3142,
                "accurate_pass": 20.3002,
                "duels_won": 5.2644,
                "total_long_balls": 1.1292,
                "accurate_long_balls": 0.4517,
                "total_own_half_passes": 7.8196,
                "accurate_own_half_passes": 6.9486,
                "total_opp_half_passes": 18.4944,
                "accurate_opp_half_passes": 13.3516,
                "crosses_total": 0.2851,
                "crosses_accurate": 0.0,
                "touches": 39.3667,
                "possession_lost": 9.3119,
                "dispossessed": 1.5856,
                "duels_lost": 6.709,
                "aerial_won": 1.5661,
                "aerial_lost": 3.3648,
                "interceptions": 0.6103,
                "tackles_won": 0.9314,
                "tackles": 1.7788,
                "clearances": 1.0614,
                "total_contest": 0.7271,
                "won_contest": 0.3623,
                "challenges_lost": 0.2166,
                "fouls": 1.3791,
                "fouls_drawn": 1.5641,
                "blocks": 0.1369,
                "big_chances_created": 0.2674,
                "big_chances_missed": 0.3904,
                "xgot": 0.1922,
                "ball_carries": 6.6379,
                "total_progression": 14.8119,
                "progressive_carries": 0.9578,
                "shots_off_target": 1.2107,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1794,
                "projected_assists": 0,
                "assist_probability": 0.079,
                "finishing_factor": 0.9059,
                "creation_factor": 0.8807,
                "fifa_overall": 83.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.079,
                "assist_rate": 0.0526,
                "provider_weight": 0.0725,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0464,
                "creation_factor": 0.8807,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Bukayo Saka": {
          "player_id": 934235,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 7,
          "height": 178,
          "market_value": 115000000,
          "stats": {
            "expected_goals": 0.5099,
            "goal_rate": 0.4136,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 3,
            "expected_assists": 0.2467,
            "key_pass": 1,
            "rating": 7.2374,
            "minutes": 85,
            "total_pass": 31,
            "accurate_pass": 24,
            "duels_won": 6,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 25,
            "accurate_opp_half_passes": 19,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 54,
            "possession_lost": 14.9082,
            "dispossessed": 1.2364,
            "duels_lost": 6,
            "aerial_lost": 2,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 3,
            "assist_rate": 0.0961,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.7084,
            "offsides": 1,
            "ball_carries": 20,
            "total_progression": 85,
            "progressive_carries": 3,
            "shots_off_target": 2,
            "duel_xg_multiplier": 1.2392,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.6,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.363,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "John Egan, Semi Ajayi",
            "opponent_faced": "John Egan, Semi Ajayi",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.3994,
            "projected_assists": 0,
            "assist_probability": 0.2186,
            "finishing_factor": 1.0684,
            "creation_factor": 0.8,
            "fifa_overall": 87.0
          },
          "latest_10_games": [
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1605,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 26,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 9,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4132,
                "expected_assists": 0.0609,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 27,
                "key_pass": 2,
                "tackles": 1,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 81,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.335,
                "expected_assists": 0.5495,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 16,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.3751,
                "expected_assists": 0.0842,
                "total_shots": 4,
                "shots_on_target": 3,
                "total_pass": 27,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 89,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.225,
                "expected_assists": 0.2282,
                "total_shots": 4,
                "shots_on_target": 3,
                "total_pass": 28,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.627,
                "expected_assists": 0.0376,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 47,
                "accurate_pass": 38,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 12,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 68,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6432,
                "expected_assists": 0.0764,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 34,
                "accurate_pass": 30,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.195,
                "expected_assists": 0.2905,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 32,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 8,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023942.0,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 80,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0432,
                "expected_assists": 0.246,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 23,
                "accurate_pass": 17,
                "key_pass": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931.0,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Fulham",
              "stats": {
                "minutes": 45,
                "rating": 9.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.2952,
                "expected_assists": 0.8561,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 24,
                "key_pass": 4,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 45,
            "combined_rank_score": 53.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 41.0,
            "sofascore_rating": 7.85,
            "sofascore_appearances": 2.0,
            "fifa_rank": 66.0,
            "fifa_overall": 87.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.2374,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bukayo Saka",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Martin Ødegaard",
                  "ranking": 40
                },
                {
                  "player_name": "Lionel Messi",
                  "ranking": 41
                },
                {
                  "player_name": "Abdumavlon Abduzhalilov",
                  "ranking": 42
                },
                {
                  "player_name": "Eryin Sanhueza",
                  "ranking": 43
                },
                {
                  "player_name": "Euller",
                  "ranking": 44
                }
              ],
              "lower": [
                {
                  "player_name": "Federico Valverde",
                  "ranking": 46
                },
                {
                  "player_name": "Ayrton Lucas",
                  "ranking": 47
                },
                {
                  "player_name": "Giorgian de Arrascaeta",
                  "ranking": 48
                },
                {
                  "player_name": "Rayan Cherki",
                  "ranking": 49
                },
                {
                  "player_name": "Rodri",
                  "ranking": 50
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.767,
          "history_matches": 38,
          "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": 38,
            "data_confidence": 0.767,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0137,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 157.0,
              "goals_per90": 1.1764705882352942,
              "assists_per90": 0.0,
              "shots_per90": 2.87,
              "shots_on_target_pct": 40.0,
              "prior_reliability": 0.1133
            },
            "rationale": "XGBoost regressor (F_service) evaluated 38 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Arsenal, rel: 0.11, gls/90: 1.1764705882352942, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3056,
                "goals": 0.3227,
                "goal_rate": 0.3227,
                "shots_on_target": 1.0128,
                "total_shots": 2.3341,
                "expected_assists": 0.1967,
                "key_pass": 1.4753,
                "rating": 7.2374,
                "minutes": 84.75,
                "total_pass": 30.7709,
                "accurate_pass": 23.9722,
                "duels_won": 5.9057,
                "total_long_balls": 1.2603,
                "accurate_long_balls": 0.4313,
                "total_opp_half_passes": 24.4442,
                "accurate_opp_half_passes": 19.0129,
                "crosses_total": 3.8687,
                "crosses_accurate": 1.422,
                "touches": 53.1834,
                "possession_lost": 14.7067,
                "dispossessed": 1.2197,
                "duels_lost": 5.9987,
                "aerial_lost": 1.4827,
                "total_contest": 2.8664,
                "won_contest": 1.1715,
                "ball_recovery": 3.4013,
                "challenges_lost": 0.5817,
                "fouls": 1.0245,
                "fouls_drawn": 2.542,
                "assists": 0.0956,
                "assist_rate": 0.0956,
                "interceptions": 0.6214,
                "tackles_won": 1.1116,
                "tackles": 1.7275,
                "clearances": 0.7717,
                "blocks": 0.1693,
                "big_chances_created": 0.158,
                "big_chances_missed": 0.4888,
                "xgot": 0.4245,
                "offsides": 0.8659,
                "ball_carries": 19.3643,
                "total_progression": 83.3967,
                "progressive_carries": 3.2204,
                "shots_off_target": 1.3213
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:06:26.876327+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 612,
                    "rows": 17180
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 8.1
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 9.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "accuratePass": 23.0056,
                  "expectedGoals": 0.3713,
                  "accurateOppositionHalfPasses": 18.2477,
                  "totalShots": 2.1891,
                  "totalOppositionHalfPasses": 23.4376
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.3055810332298279,
                    "model_output": 0.3056,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2767
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0987
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.036
                      },
                      {
                        "name": "goals",
                        "importance": 0.0336
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.1929,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0563
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0353
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0196
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0122
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0122
                        }
                      ],
                      "others": 0.0163,
                      "total": 0.3056,
                      "log_link": true,
                      "margin_base": -1.645586,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.256191
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.132315
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.071526
                        },
                        {
                          "name": "goals",
                          "margin": 0.044857
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.043008
                        }
                      ],
                      "others_margin": 0.0552
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.32272398471832275,
                    "model_output": 0.3227,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1491
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0805
                      },
                      {
                        "name": "goals",
                        "importance": 0.056
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0343
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.1972,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0655
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0396
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0211
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.019
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0109
                        }
                      ],
                      "others": 0.0074,
                      "total": 0.3227,
                      "log_link": true,
                      "margin_base": -1.623746,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.286801
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.140527
                        },
                        {
                          "name": "goals",
                          "margin": 0.067483
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.060691
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.035031
                        }
                      ],
                      "others_margin": 0.023637
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 1.012796401977539,
                    "model_output": 1.0128,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2173
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0637
                      },
                      {
                        "name": "goals",
                        "importance": 0.0596
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0393
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.5269,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.183
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0803
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0725
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0701
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0572
                        }
                      ],
                      "others": 0.1678,
                      "total": 1.0128,
                      "log_link": true,
                      "margin_base": -0.640773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.298097
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.107201
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.096166
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.093171
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.070048
                        }
                      ],
                      "others_margin": 0.181137
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.334061622619629,
                    "model_output": 2.3341,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3005
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0627
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0526
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0309
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0307
                      }
                    ],
                    "decomposition": {
                      "base": 1.3756,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4665
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1682
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.076
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.06
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0554
                        }
                      ],
                      "others": 0.2524,
                      "total": 2.3341,
                      "log_link": false,
                      "margin_base": 1.375643,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.466514
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.168167
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.075979
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.060026
                        },
                        {
                          "name": "goals",
                          "margin": 0.055386
                        }
                      ],
                      "others_margin": 0.252397
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.19674430787563324,
                    "model_output": 0.1967,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1287
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1119
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0634
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0522
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.051
                      }
                    ],
                    "decomposition": {
                      "base": 0.065,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0134
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.016
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0168
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0132
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0121
                        }
                      ],
                      "others": 0.0602,
                      "total": 0.1967,
                      "log_link": true,
                      "margin_base": -2.733324,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.186827
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.185466
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.163901
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.111907
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.092754
                        }
                      ],
                      "others_margin": 0.366619
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.475258231163025,
                    "model_output": 1.4753,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1579
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1341
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0953
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.069
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.6917,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1829
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.1121
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.1194
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.1124
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0905
                        }
                      ],
                      "others": 0.1663,
                      "total": 1.4753,
                      "log_link": true,
                      "margin_base": -0.368585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.234633
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.120591
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.114183
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.096777
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.071622
                        }
                      ],
                      "others_margin": 0.119611
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.237368583679199,
                    "model_output": 7.2374,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.048
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0462
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0455
                      },
                      {
                        "name": "rating",
                        "importance": 0.0455
                      }
                    ],
                    "decomposition": {
                      "base": 6.7733,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0845
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0676
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0644
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0534
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0319
                        }
                      ],
                      "others": 0.1623,
                      "total": 7.2374,
                      "log_link": false,
                      "margin_base": 6.773334,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.084508
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.067629
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.064404
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.053415
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.031909
                        }
                      ],
                      "others_margin": 0.162168
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 38,
                  "role_matches": 32,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0137, quality 0.897)",
              "stats": {
                "expected_goals": 0.3098,
                "goals": 0.3271,
                "goal_rate": 0.3271,
                "shots_on_target": 1.0267,
                "total_shots": 2.3661,
                "expected_assists": 0.1994,
                "key_pass": 1.4955,
                "rating": 7.2374,
                "minutes": 84.75,
                "total_pass": 31.1925,
                "accurate_pass": 24.3006,
                "duels_won": 5.9866,
                "total_long_balls": 1.2776,
                "accurate_long_balls": 0.4372,
                "total_opp_half_passes": 24.7791,
                "accurate_opp_half_passes": 19.2734,
                "crosses_total": 3.9217,
                "crosses_accurate": 1.4415,
                "touches": 53.912,
                "possession_lost": 14.9082,
                "dispossessed": 1.2364,
                "duels_lost": 6.0809,
                "aerial_lost": 1.503,
                "total_contest": 2.9057,
                "won_contest": 1.1875,
                "ball_recovery": 3.4479,
                "challenges_lost": 0.5897,
                "fouls": 1.0385,
                "fouls_drawn": 2.5768,
                "assists": 0.0969,
                "assist_rate": 0.0969,
                "interceptions": 0.6299,
                "tackles_won": 1.1268,
                "tackles": 1.7512,
                "clearances": 0.7823,
                "blocks": 0.1716,
                "big_chances_created": 0.1602,
                "big_chances_missed": 0.4955,
                "xgot": 0.4303,
                "offsides": 0.8778,
                "ball_carries": 19.6296,
                "total_progression": 84.5392,
                "progressive_carries": 3.2645,
                "shots_off_target": 1.3394
              },
              "params": {
                "market_value_eur": 115000000,
                "quality_factor": 0.8968,
                "boost_factor": 1.0137,
                "reference_quality": 0.505,
                "history_matches": 38,
                "history_shrink": 0.1163,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0086)",
              "stats": {
                "expected_goals": 0.3098,
                "goals": 0.3338,
                "goal_rate": 0.3338,
                "shots_on_target": 1.0272,
                "total_shots": 2.369,
                "expected_assists": 0.1994,
                "key_pass": 1.4955,
                "rating": 7.2374,
                "minutes": 84.75,
                "total_pass": 31.1925,
                "accurate_pass": 24.3006,
                "duels_won": 5.9866,
                "total_long_balls": 1.2776,
                "accurate_long_balls": 0.4372,
                "total_opp_half_passes": 24.7791,
                "accurate_opp_half_passes": 19.2734,
                "crosses_total": 3.9308,
                "crosses_accurate": 1.4415,
                "touches": 53.912,
                "possession_lost": 14.9082,
                "dispossessed": 1.2364,
                "duels_lost": 6.0809,
                "aerial_lost": 1.503,
                "total_contest": 2.9057,
                "won_contest": 1.1875,
                "ball_recovery": 3.4479,
                "challenges_lost": 0.5897,
                "fouls": 1.0296,
                "fouls_drawn": 2.5879,
                "assists": 0.0961,
                "assist_rate": 0.0961,
                "interceptions": 0.634,
                "tackles_won": 1.1314,
                "tackles": 1.7512,
                "clearances": 0.7823,
                "blocks": 0.1716,
                "big_chances_created": 0.1602,
                "big_chances_missed": 0.4955,
                "xgot": 0.4303,
                "offsides": 0.8798,
                "ball_carries": 19.6296,
                "total_progression": 84.5392,
                "progressive_carries": 3.2645,
                "shots_off_target": 1.3394
              },
              "params": {
                "blend_weight": 0.0086,
                "history_matches": 38,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9417,
                "prior_reliability": 0.1133,
                "competition": "Premier League",
                "squad": "Arsenal"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 2.5768,
                  "after": 2.5879
                },
                {
                  "stat": "totalCross",
                  "before": 3.9217,
                  "after": 3.9308
                },
                {
                  "stat": "fouls",
                  "before": 1.0385,
                  "after": 1.0296
                },
                {
                  "stat": "goals",
                  "before": 0.3271,
                  "after": 0.3338
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3098,
                "goals": 0.3338,
                "goal_rate": 0.3338,
                "shots_on_target": 1.0272,
                "total_shots": 2.369,
                "expected_assists": 0.1994,
                "key_pass": 1.4955,
                "rating": 7.2374,
                "minutes": 84.75,
                "total_pass": 31.1925,
                "accurate_pass": 24.3006,
                "duels_won": 5.9866,
                "total_long_balls": 1.2776,
                "accurate_long_balls": 0.4372,
                "total_opp_half_passes": 24.7791,
                "accurate_opp_half_passes": 19.2734,
                "crosses_total": 3.9308,
                "crosses_accurate": 1.4415,
                "touches": 53.912,
                "possession_lost": 14.9082,
                "dispossessed": 1.2364,
                "duels_lost": 6.0809,
                "aerial_lost": 1.503,
                "total_contest": 2.9057,
                "won_contest": 1.1875,
                "ball_recovery": 3.4479,
                "challenges_lost": 0.5897,
                "fouls": 1.0296,
                "fouls_drawn": 2.5879,
                "assists": 0.0961,
                "assist_rate": 0.0961,
                "interceptions": 0.634,
                "tackles_won": 1.1314,
                "tackles": 1.7512,
                "clearances": 0.7823,
                "blocks": 0.1716,
                "big_chances_created": 0.1602,
                "big_chances_missed": 0.4955,
                "xgot": 0.4303,
                "offsides": 0.8798,
                "ball_carries": 19.6296,
                "total_progression": 84.5392,
                "progressive_carries": 3.2645,
                "shots_off_target": 1.3394
              },
              "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.3839,
                "goals": 0.4136,
                "goal_rate": 0.4136,
                "shots_on_target": 1.2729,
                "total_shots": 2.9357,
                "expected_assists": 0.1994,
                "key_pass": 1.4955,
                "rating": 7.2374,
                "minutes": 84.75,
                "total_pass": 31.1925,
                "accurate_pass": 24.3006,
                "duels_won": 5.9866,
                "total_long_balls": 1.2776,
                "accurate_long_balls": 0.4372,
                "total_opp_half_passes": 24.7791,
                "accurate_opp_half_passes": 19.2734,
                "crosses_total": 3.9308,
                "crosses_accurate": 1.4415,
                "touches": 53.912,
                "possession_lost": 14.9082,
                "dispossessed": 1.2364,
                "duels_lost": 6.0809,
                "aerial_lost": 1.503,
                "total_contest": 2.9057,
                "won_contest": 1.1875,
                "ball_recovery": 3.4479,
                "challenges_lost": 0.5897,
                "fouls": 1.0296,
                "fouls_drawn": 2.5879,
                "assists": 0.0961,
                "assist_rate": 0.0961,
                "interceptions": 0.634,
                "tackles_won": 1.1314,
                "tackles": 1.7512,
                "clearances": 0.7823,
                "blocks": 0.1716,
                "big_chances_created": 0.1602,
                "big_chances_missed": 0.614,
                "xgot": 0.5332,
                "offsides": 0.8798,
                "ball_carries": 19.6296,
                "total_progression": 84.5392,
                "progressive_carries": 3.2645,
                "shots_off_target": 1.6598,
                "duel_xg_multiplier": 1.2392,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.363,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "John Egan, Semi Ajayi",
                "opponent_faced": "John Egan, Semi Ajayi",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "John Egan, Semi Ajayi",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.363,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.2392,
                  "skill_edge": 0.2067,
                  "height_edge": -0.044,
                  "attacker_skill": 0.8968,
                  "defender_skill": 0.4374,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "John Egan",
                      "market_value": 1500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    },
                    {
                      "player": "Semi Ajayi",
                      "market_value": 930000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.3839
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.369,
                  "after": 2.9357
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.3394,
                  "after": 1.6598
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.0272,
                  "after": 1.2729
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.4955,
                  "after": 0.614
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.4303,
                  "after": 0.5332
                },
                {
                  "stat": "goals",
                  "before": 0.3338,
                  "after": 0.4136
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3098,
                  "after": 0.3839
                }
              ]
            },
            {
              "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.3839,
                "goal_rate": 0.4136,
                "goals": 0,
                "shots_on_target": 1.2729,
                "total_shots": 2.9357,
                "expected_assists": 0.1994,
                "key_pass": 1.4955,
                "rating": 7.2374,
                "minutes": 84.75,
                "total_pass": 31.1925,
                "accurate_pass": 24.3006,
                "duels_won": 5.9866,
                "total_long_balls": 1.2776,
                "accurate_long_balls": 0.4372,
                "total_opp_half_passes": 24.7791,
                "accurate_opp_half_passes": 19.2734,
                "crosses_total": 3.9308,
                "crosses_accurate": 1.4415,
                "touches": 53.912,
                "possession_lost": 14.9082,
                "dispossessed": 1.2364,
                "duels_lost": 6.0809,
                "aerial_lost": 1.503,
                "total_contest": 2.9057,
                "won_contest": 1.1875,
                "ball_recovery": 3.4479,
                "challenges_lost": 0.5897,
                "fouls": 1.0296,
                "fouls_drawn": 2.5879,
                "assist_rate": 0.0961,
                "assists": 0,
                "interceptions": 0.634,
                "tackles_won": 1.1314,
                "tackles": 1.7512,
                "clearances": 0.7823,
                "blocks": 0.1716,
                "big_chances_created": 0.1602,
                "big_chances_missed": 0.614,
                "xgot": 0.5332,
                "offsides": 0.8798,
                "ball_carries": 19.6296,
                "total_progression": 84.5392,
                "progressive_carries": 3.2645,
                "shots_off_target": 1.6598,
                "duel_xg_multiplier": 1.2392,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.363,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "John Egan, Semi Ajayi",
                "opponent_faced": "John Egan, Semi Ajayi",
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "expected_goals": 0.5099,
                "goal_rate": 0.4136,
                "goals": 0,
                "shots_on_target": 1.2729,
                "total_shots": 2.9357,
                "expected_assists": 0.2467,
                "key_pass": 1.4955,
                "rating": 7.2374,
                "minutes": 84.75,
                "total_pass": 31.1925,
                "accurate_pass": 24.3006,
                "duels_won": 5.9866,
                "total_long_balls": 1.2776,
                "accurate_long_balls": 0.4372,
                "total_opp_half_passes": 24.7791,
                "accurate_opp_half_passes": 19.2734,
                "crosses_total": 3.9308,
                "crosses_accurate": 1.4415,
                "touches": 53.912,
                "possession_lost": 14.9082,
                "dispossessed": 1.2364,
                "duels_lost": 6.0809,
                "aerial_lost": 1.503,
                "total_contest": 2.9057,
                "won_contest": 1.1875,
                "ball_recovery": 3.4479,
                "challenges_lost": 0.5897,
                "fouls": 1.0296,
                "fouls_drawn": 2.5879,
                "assist_rate": 0.0961,
                "assists": 0,
                "interceptions": 0.634,
                "tackles_won": 1.1314,
                "tackles": 1.7512,
                "clearances": 0.7823,
                "blocks": 0.1716,
                "big_chances_created": 0.1602,
                "big_chances_missed": 0.614,
                "xgot": 0.7084,
                "offsides": 0.8798,
                "ball_carries": 19.6296,
                "total_progression": 84.5392,
                "progressive_carries": 3.2645,
                "shots_off_target": 1.6598,
                "duel_xg_multiplier": 1.2392,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.363,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "John Egan, Semi Ajayi",
                "opponent_faced": "John Egan, Semi Ajayi",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0684,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.3839,
                  "after": 0.5099
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1994,
                  "after": 0.2467
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 87.0)",
              "stats": {
                "expected_goals": 0.5099,
                "goal_rate": 0.4136,
                "goals": 0,
                "shots_on_target": 1.2729,
                "total_shots": 2.9357,
                "expected_assists": 0.2467,
                "key_pass": 1.4955,
                "rating": 7.2374,
                "minutes": 84.75,
                "total_pass": 31.1925,
                "accurate_pass": 24.3006,
                "duels_won": 5.9866,
                "total_long_balls": 1.2776,
                "accurate_long_balls": 0.4372,
                "total_opp_half_passes": 24.7791,
                "accurate_opp_half_passes": 19.2734,
                "crosses_total": 3.9308,
                "crosses_accurate": 1.4415,
                "touches": 53.912,
                "possession_lost": 14.9082,
                "dispossessed": 1.2364,
                "duels_lost": 6.0809,
                "aerial_lost": 1.503,
                "total_contest": 2.9057,
                "won_contest": 1.1875,
                "ball_recovery": 3.4479,
                "challenges_lost": 0.5897,
                "fouls": 1.0296,
                "fouls_drawn": 2.5879,
                "assist_rate": 0.0961,
                "assists": 0,
                "interceptions": 0.634,
                "tackles_won": 1.1314,
                "tackles": 1.7512,
                "clearances": 0.7823,
                "blocks": 0.1716,
                "big_chances_created": 0.1602,
                "big_chances_missed": 0.614,
                "xgot": 0.7084,
                "offsides": 0.8798,
                "ball_carries": 19.6296,
                "total_progression": 84.5392,
                "progressive_carries": 3.2645,
                "shots_off_target": 1.6598,
                "duel_xg_multiplier": 1.2392,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.363,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "John Egan, Semi Ajayi",
                "opponent_faced": "John Egan, Semi Ajayi",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0684,
                "creation_factor": 0.8,
                "fifa_overall": 87.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": 45,
                "fifa_rank": 66.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 87.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.5099,
                "goal_rate": 0.4136,
                "goals": 1,
                "shots_on_target": 1.2729,
                "total_shots": 2.9357,
                "expected_assists": 0.2467,
                "key_pass": 1.4955,
                "rating": 7.2374,
                "minutes": 84.75,
                "total_pass": 31.1925,
                "accurate_pass": 24.3006,
                "duels_won": 5.9866,
                "total_long_balls": 1.2776,
                "accurate_long_balls": 0.4372,
                "total_opp_half_passes": 24.7791,
                "accurate_opp_half_passes": 19.2734,
                "crosses_total": 3.9308,
                "crosses_accurate": 1.4415,
                "touches": 53.912,
                "possession_lost": 14.9082,
                "dispossessed": 1.2364,
                "duels_lost": 6.0809,
                "aerial_lost": 1.503,
                "total_contest": 2.9057,
                "won_contest": 1.1875,
                "ball_recovery": 3.4479,
                "challenges_lost": 0.5897,
                "fouls": 1.0296,
                "fouls_drawn": 2.5879,
                "assist_rate": 0.0961,
                "assists": 0,
                "interceptions": 0.634,
                "tackles_won": 1.1314,
                "tackles": 1.7512,
                "clearances": 0.7823,
                "blocks": 0.1716,
                "big_chances_created": 0.1602,
                "big_chances_missed": 0.614,
                "xgot": 0.7084,
                "offsides": 0.8798,
                "ball_carries": 19.6296,
                "total_progression": 84.5392,
                "progressive_carries": 3.2645,
                "shots_off_target": 1.6598,
                "duel_xg_multiplier": 1.2392,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.363,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "John Egan, Semi Ajayi",
                "opponent_faced": "John Egan, Semi Ajayi",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.3994,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0684,
                "creation_factor": 0.8,
                "fifa_overall": 87.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.3994,
                "goal_rate": 0.4136,
                "scorer_weight": 0.5448,
                "squad_weight_total": 2.0855,
                "weight_share": 0.2612,
                "finishing_factor": 1.0684,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.5099,
                "goal_rate": 0.4136,
                "goals": 1,
                "shots_on_target": 1.2729,
                "total_shots": 2.9357,
                "expected_assists": 0.2467,
                "key_pass": 1.4955,
                "rating": 7.2374,
                "minutes": 84.75,
                "total_pass": 31.1925,
                "accurate_pass": 24.3006,
                "duels_won": 5.9866,
                "total_long_balls": 1.2776,
                "accurate_long_balls": 0.4372,
                "total_opp_half_passes": 24.7791,
                "accurate_opp_half_passes": 19.2734,
                "crosses_total": 3.9308,
                "crosses_accurate": 1.4415,
                "touches": 53.912,
                "possession_lost": 14.9082,
                "dispossessed": 1.2364,
                "duels_lost": 6.0809,
                "aerial_lost": 1.503,
                "total_contest": 2.9057,
                "won_contest": 1.1875,
                "ball_recovery": 3.4479,
                "challenges_lost": 0.5897,
                "fouls": 1.0296,
                "fouls_drawn": 2.5879,
                "assist_rate": 0.0961,
                "assists": 0,
                "interceptions": 0.634,
                "tackles_won": 1.1314,
                "tackles": 1.7512,
                "clearances": 0.7823,
                "blocks": 0.1716,
                "big_chances_created": 0.1602,
                "big_chances_missed": 0.614,
                "xgot": 0.7084,
                "offsides": 0.8798,
                "ball_carries": 19.6296,
                "total_progression": 84.5392,
                "progressive_carries": 3.2645,
                "shots_off_target": 1.6598,
                "duel_xg_multiplier": 1.2392,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.363,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "John Egan, Semi Ajayi",
                "opponent_faced": "John Egan, Semi Ajayi",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.3994,
                "projected_assists": 0,
                "assist_probability": 0.2186,
                "finishing_factor": 1.0684,
                "creation_factor": 0.8,
                "fifa_overall": 87.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.2186,
                "assist_rate": 0.0961,
                "provider_weight": 0.1974,
                "squad_weight_total": 1.5615,
                "weight_share": 0.1264,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Illan Meslier": {
          "player_id": 906076,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 30,
          "height": 196,
          "market_value": 5600000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0241,
            "rating": 6.8,
            "minutes": 5,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0151,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.1205,
            "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.115,
            "bench_expected_minutes": 4.52,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.671,
            "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": 71.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 4438,
            "combined_rank_score": 2457.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4747.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Illan Meslier",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Matěj Šín",
                  "ranking": 4433
                },
                {
                  "player_name": "Dominik Schmid",
                  "ranking": 4434
                },
                {
                  "player_name": "José Canale",
                  "ranking": 4435
                },
                {
                  "player_name": "Lee Dong Gyeong",
                  "ranking": 4436
                },
                {
                  "player_name": "Miroslav Stevanović",
                  "ranking": 4437
                }
              ],
              "lower": [
                {
                  "player_name": "Sorriso",
                  "ranking": 4439
                },
                {
                  "player_name": "Andrés Mosquera",
                  "ranking": 4440
                },
                {
                  "player_name": "Lyle Foster",
                  "ranking": 4441
                },
                {
                  "player_name": "Bruma",
                  "ranking": 4442
                },
                {
                  "player_name": "João Carvalho",
                  "ranking": 4443
                }
              ]
            }
          },
          "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.519403046799347,
            "bench_appearance_prob": 0.11451832030906123,
            "market_value_adjustment": 0.4695,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€5,600,000) scaled to 4.5 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position G (quality 0.47)",
              "stats": {
                "saves": 3.0,
                "goals_prevented": 0.48,
                "rating": 6.8,
                "minutes": 90.0,
                "total_pass": 27.0,
                "accurate_pass": 20.0,
                "total_long_balls": 9.0,
                "accurate_long_balls": 4.0,
                "touches": 32.0,
                "clearances": 1.0,
                "ball_recovery": 1.2,
                "high_claims": 0.6,
                "punches": 0.3,
                "aerial_won": 0.7,
                "sweeper_actions": 1.2,
                "sweeper_accurate": 0.8,
                "saves_inside_box": 1.2,
                "possession_lost": 2.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": 22.0,
                "accurate_own_half_passes": 17.0
              },
              "params": {
                "market_value_eur": 5600000,
                "quality_factor": 0.4695
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 4.5 expected minutes (appearance prob 0.11)",
              "stats": {
                "saves": 0.1506,
                "goals_prevented": 0.0241,
                "rating": 6.8,
                "minutes": 4.52,
                "total_pass": 1.3558,
                "accurate_pass": 1.0043,
                "total_long_balls": 0.4519,
                "accurate_long_balls": 0.2009,
                "touches": 1.6069,
                "clearances": 0.0502,
                "ball_recovery": 0.0603,
                "high_claims": 0.0301,
                "punches": 0.0151,
                "aerial_won": 0.0352,
                "sweeper_actions": 0.0603,
                "sweeper_accurate": 0.0402,
                "saves_inside_box": 0.0603,
                "possession_lost": 0.1205,
                "duels_won": 0.0201,
                "duels_lost": 0.01,
                "total_contest": 0.0201,
                "won_contest": 0.01,
                "fouls": 0.01,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.1047,
                "accurate_own_half_passes": 0.8537,
                "bench_appearance_probability": 0.115,
                "bench_expected_minutes": 4.52
              },
              "params": {
                "expected_minutes": 4.52,
                "projection_minutes": 90.0,
                "minutes_scale": 0.0502,
                "appearance_probability": 0.115
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.1506,
                "goals_prevented": 0.0241,
                "rating": 6.8,
                "minutes": 4.52,
                "total_pass": 1.3558,
                "accurate_pass": 1.0043,
                "total_long_balls": 0.4519,
                "accurate_long_balls": 0.2009,
                "touches": 1.6069,
                "clearances": 0.0502,
                "ball_recovery": 0.0603,
                "high_claims": 0.0301,
                "punches": 0.0151,
                "aerial_won": 0.0352,
                "sweeper_actions": 0.0603,
                "sweeper_accurate": 0.0402,
                "saves_inside_box": 0.0603,
                "possession_lost": 0.1205,
                "duels_won": 0.0201,
                "duels_lost": 0.01,
                "total_contest": 0.0201,
                "won_contest": 0.01,
                "fouls": 0.01,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.1047,
                "accurate_own_half_passes": 0.8537,
                "bench_appearance_probability": 0.115,
                "bench_expected_minutes": 4.52
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "saves": 0.1506,
                "goals_prevented": 0.0241,
                "rating": 6.8,
                "minutes": 4.52,
                "total_pass": 1.3558,
                "accurate_pass": 1.0043,
                "total_long_balls": 0.4519,
                "accurate_long_balls": 0.2009,
                "touches": 1.6069,
                "clearances": 0.0502,
                "ball_recovery": 0.0603,
                "high_claims": 0.0301,
                "punches": 0.0151,
                "aerial_won": 0.0352,
                "sweeper_actions": 0.0603,
                "sweeper_accurate": 0.0402,
                "saves_inside_box": 0.0603,
                "possession_lost": 0.1205,
                "duels_won": 0.0201,
                "duels_lost": 0.01,
                "total_contest": 0.0201,
                "won_contest": 0.01,
                "fouls": 0.01,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.1047,
                "accurate_own_half_passes": 0.8537,
                "bench_appearance_probability": 0.115,
                "bench_expected_minutes": 4.52,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.115,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 71.0)",
              "stats": {
                "saves": 0.1506,
                "goals_prevented": 0.0241,
                "rating": 6.8,
                "minutes": 4.52,
                "total_pass": 1.3558,
                "accurate_pass": 1.0043,
                "total_long_balls": 0.4519,
                "accurate_long_balls": 0.2009,
                "touches": 1.6069,
                "clearances": 0.0502,
                "ball_recovery": 0.0603,
                "high_claims": 0.0301,
                "punches": 0.0151,
                "aerial_won": 0.0352,
                "sweeper_actions": 0.0603,
                "sweeper_accurate": 0.0402,
                "saves_inside_box": 0.0603,
                "possession_lost": 0.1205,
                "duels_won": 0.0201,
                "duels_lost": 0.01,
                "total_contest": 0.0201,
                "won_contest": 0.01,
                "fouls": 0.01,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.1047,
                "accurate_own_half_passes": 0.8537,
                "bench_appearance_probability": 0.115,
                "bench_expected_minutes": 4.52,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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": 71.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4438,
                "fifa_rank": 4747.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            }
          ]
        },
        "Jurriën Timber": {
          "player_id": 958959,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 12,
          "height": 179,
          "market_value": 73000000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.689,
            "minutes": 15,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 11,
            "possession_lost": 2.3727,
            "dispossessed": 0.168,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0183,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 3,
            "total_progression": 9,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.377,
            "bench_expected_minutes": 15.3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.671,
            "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": 84.0
          },
          "latest_10_games": [
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 24,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.073,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 14,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 27,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0491,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 60,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0202,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 22,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0074,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 10,
                "tackles": 1,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023987.0,
              "match_date": "2026-03-14",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 38,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0099,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 10,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023933.0,
              "match_date": "2026-03-04",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0747,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 13,
                "key_pass": 2,
                "tackles": 5,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023971.0,
              "match_date": "2026-03-01",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3958,
                "expected_assists": 0.0122,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 27,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024012.0,
              "match_date": "2026-02-22",
              "home_team": "Tottenham Hotspur",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 57,
                "rating": 6.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1966,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 38,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025018.0,
              "match_date": "2026-02-18",
              "home_team": "Wolverhampton",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0296,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 41,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025185.0,
              "match_date": "2026-02-12",
              "home_team": "Brentford",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0972,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 29,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 384,
            "combined_rank_score": 246.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 286.0,
            "sofascore_rating": 7.06,
            "sofascore_appearances": 5.0,
            "fifa_rank": 206.0,
            "fifa_overall": 84.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.689,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jurriën Timber",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Pablo Fornals",
                  "ranking": 379
                },
                {
                  "player_name": "Bashar Resan",
                  "ranking": 380
                },
                {
                  "player_name": "Casemiro",
                  "ranking": 381
                },
                {
                  "player_name": "Waldemar Anton",
                  "ranking": 382
                },
                {
                  "player_name": "Alfie McCalmont",
                  "ranking": 383
                }
              ],
              "lower": [
                {
                  "player_name": "Ho-Yeon Jung",
                  "ranking": 385
                },
                {
                  "player_name": "Yong-seung Kwon",
                  "ranking": 386
                },
                {
                  "player_name": "Kim Hee-Seung",
                  "ranking": 387
                },
                {
                  "player_name": "Mykola Matvienko",
                  "ranking": 388
                },
                {
                  "player_name": "Aji Alese",
                  "ranking": 389
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 34,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 34,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 15.303682495221587,
            "bench_appearance_prob": 0.37744011341916306,
            "market_value_adjustment": 1.0142,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (34 historical appearances) to 15.3 expected mins (appearance prob 0.38)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.322,
                "tackles": 0.5806,
                "tackles_won": 0.3483,
                "clearances": 0.7678,
                "aerial_won": 0.3068,
                "total_shots": 0.229,
                "rating": 6.689,
                "minutes": 27.8,
                "total_pass": 13.0269,
                "accurate_pass": 10.9977,
                "duels_won": 0.8463,
                "total_long_balls": 1.7685,
                "accurate_long_balls": 0.7049,
                "total_own_half_passes": 5.7212,
                "accurate_own_half_passes": 5.1316,
                "total_opp_half_passes": 7.3057,
                "accurate_opp_half_passes": 5.8661,
                "crosses_total": 0.4988,
                "crosses_accurate": 0.2292,
                "touches": 19.7986,
                "possession_lost": 4.2498,
                "dispossessed": 0.1656,
                "duels_lost": 2.0057,
                "aerial_lost": 0.4719,
                "total_contest": 0.8327,
                "won_contest": 0.0,
                "ball_recovery": 2.276,
                "challenges_lost": 0.0,
                "fouls": 0.6763,
                "fouls_drawn": 0.1408,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0328,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6168,
                "total_progression": 15.4814,
                "progressive_carries": 0.7775,
                "key_pass": 0.2696,
                "shots_off_target": 0.229
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1506,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.128,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0925,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Everton",
                    "minutes": 38.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-04",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-03-01",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-02-22",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 57.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-18",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-02-12",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 1.5711,
                  "aerialWon": 0.7394,
                  "totalClearance_p90": 2.6997,
                  "totalTackle": 1.3961,
                  "totalTackle_p90": 1.8493
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.3219791054725647,
                    "model_output": 0.322,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4632
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0387
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0137
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.008
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0076
                        }
                      ],
                      "others": -0.0179,
                      "total": 0.322,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.758627
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.099585
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.037842
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.022726
                        },
                        {
                          "name": "touches",
                          "margin": -0.022043
                        }
                      ],
                      "others_margin": -0.054476
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5805616974830627,
                    "model_output": 0.5806,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7896
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0395
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0198
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.015
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": -0.0109
                        }
                      ],
                      "others": 0.0679,
                      "total": 0.5806,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.841775
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.068342
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.036088
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.028253
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": -0.020974
                        }
                      ],
                      "others_margin": 0.124171
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.3483385741710663,
                    "model_output": 0.3483,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.489
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0263
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0126
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0089
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0086
                        }
                      ],
                      "others": 0.0105,
                      "total": 0.3483,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.859279
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.075915
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.038723
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.02734
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.025925
                        }
                      ],
                      "others_margin": 0.030687
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.767838716506958,
                    "model_output": 0.7678,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0632
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.313
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0845
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.047
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0444
                        }
                      ],
                      "others": -0.0958,
                      "total": 0.7678,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.926444
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.263222
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.084832
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.050522
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.05015
                        }
                      ],
                      "others_margin": -0.117388
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.3067692816257477,
                    "model_output": 0.3068,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7877
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1735
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0403
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0291
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0118
                        }
                      ],
                      "others": -0.0205,
                      "total": 0.3068,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.855883
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.353998
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.103872
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.08226
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.035436
                        }
                      ],
                      "others_margin": -0.064805
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.22902680933475494,
                    "model_output": 0.229,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1775
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0735
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0132
                        },
                        {
                          "name": "touches",
                          "contribution": 0.01
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.015,
                      "total": 0.229,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.177538
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.073514
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.013195
                        },
                        {
                          "name": "touches",
                          "margin": 0.009959
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.009391
                        }
                      ],
                      "others_margin": -0.014933
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.689045429229736,
                    "model_output": 6.689,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0415
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0149
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0133
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0106
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0082
                        }
                      ],
                      "others": -0.0377,
                      "total": 6.689,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.041498
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014936
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.013316
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.010626
                        },
                        {
                          "name": "rating",
                          "margin": 0.00821
                        }
                      ],
                      "others_margin": -0.03757
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 5,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0142, quality 0.875)",
              "stats": {
                "interceptions": 0.3266,
                "tackles": 0.5888,
                "tackles_won": 0.3533,
                "clearances": 0.7787,
                "aerial_won": 0.3111,
                "total_shots": 0.2323,
                "rating": 6.689,
                "minutes": 27.8,
                "total_pass": 13.2119,
                "accurate_pass": 11.1539,
                "duels_won": 0.8583,
                "total_long_balls": 1.7936,
                "accurate_long_balls": 0.7149,
                "total_own_half_passes": 5.8024,
                "accurate_own_half_passes": 5.2045,
                "total_opp_half_passes": 7.4094,
                "accurate_opp_half_passes": 5.9494,
                "crosses_total": 0.5059,
                "crosses_accurate": 0.2325,
                "touches": 20.0797,
                "possession_lost": 4.3101,
                "dispossessed": 0.168,
                "duels_lost": 2.0342,
                "aerial_lost": 0.4786,
                "total_contest": 0.8445,
                "won_contest": 0.0,
                "ball_recovery": 2.3083,
                "challenges_lost": 0.0,
                "fouls": 0.6859,
                "fouls_drawn": 0.1428,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0333,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6966,
                "total_progression": 15.7012,
                "progressive_carries": 0.7885,
                "key_pass": 0.2734,
                "shots_off_target": 0.2323
              },
              "params": {
                "market_value_eur": 73000000,
                "quality_factor": 0.8747,
                "boost_factor": 1.0142,
                "reference_quality": 0.505,
                "history_matches": 34,
                "history_shrink": 0.1282,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 27.8 to 15.3 expected minutes (appearance prob 0.38)",
              "stats": {
                "interceptions": 0.1798,
                "tackles": 0.3241,
                "tackles_won": 0.1945,
                "clearances": 0.4287,
                "aerial_won": 0.1713,
                "total_shots": 0.1279,
                "rating": 6.689,
                "minutes": 15.3,
                "total_pass": 7.273,
                "accurate_pass": 6.1401,
                "duels_won": 0.4725,
                "total_long_balls": 0.9874,
                "accurate_long_balls": 0.3935,
                "total_own_half_passes": 3.1942,
                "accurate_own_half_passes": 2.865,
                "total_opp_half_passes": 4.0788,
                "accurate_opp_half_passes": 3.2751,
                "crosses_total": 0.2785,
                "crosses_accurate": 0.128,
                "touches": 11.0537,
                "possession_lost": 2.3727,
                "dispossessed": 0.168,
                "duels_lost": 1.1198,
                "aerial_lost": 0.4786,
                "total_contest": 0.4649,
                "won_contest": 0.0,
                "ball_recovery": 1.2707,
                "challenges_lost": 0.0,
                "fouls": 0.3776,
                "fouls_drawn": 0.0786,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0183,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.1359,
                "total_progression": 8.6434,
                "progressive_carries": 0.4341,
                "key_pass": 0.1505,
                "shots_off_target": 0.1279,
                "bench_appearance_probability": 0.377,
                "bench_expected_minutes": 15.3
              },
              "params": {
                "expected_minutes": 15.3,
                "projection_minutes": 27.8,
                "minutes_scale": 0.5505,
                "appearance_probability": 0.377
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.1798,
                "tackles": 0.3241,
                "tackles_won": 0.1945,
                "clearances": 0.4287,
                "aerial_won": 0.1713,
                "total_shots": 0.1279,
                "rating": 6.689,
                "minutes": 15.3,
                "total_pass": 7.273,
                "accurate_pass": 6.1401,
                "duels_won": 0.4725,
                "total_long_balls": 0.9874,
                "accurate_long_balls": 0.3935,
                "total_own_half_passes": 3.1942,
                "accurate_own_half_passes": 2.865,
                "total_opp_half_passes": 4.0788,
                "accurate_opp_half_passes": 3.2751,
                "crosses_total": 0.2785,
                "crosses_accurate": 0.128,
                "touches": 11.0537,
                "possession_lost": 2.3727,
                "dispossessed": 0.168,
                "duels_lost": 1.1198,
                "aerial_lost": 0.4786,
                "total_contest": 0.4649,
                "won_contest": 0.0,
                "ball_recovery": 1.2707,
                "challenges_lost": 0.0,
                "fouls": 0.3776,
                "fouls_drawn": 0.0786,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0183,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.1359,
                "total_progression": 8.6434,
                "progressive_carries": 0.4341,
                "key_pass": 0.1505,
                "shots_off_target": 0.1279,
                "bench_appearance_probability": 0.377,
                "bench_expected_minutes": 15.3
              },
              "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.1798,
                "tackles": 0.3241,
                "tackles_won": 0.1945,
                "clearances": 0.4287,
                "aerial_won": 0.1713,
                "total_shots": 0.1279,
                "rating": 6.689,
                "minutes": 15.3,
                "total_pass": 7.273,
                "accurate_pass": 6.1401,
                "duels_won": 0.4725,
                "total_long_balls": 0.9874,
                "accurate_long_balls": 0.3935,
                "total_own_half_passes": 3.1942,
                "accurate_own_half_passes": 2.865,
                "total_opp_half_passes": 4.0788,
                "accurate_opp_half_passes": 3.2751,
                "crosses_total": 0.2785,
                "crosses_accurate": 0.128,
                "touches": 11.0537,
                "possession_lost": 2.3727,
                "dispossessed": 0.168,
                "duels_lost": 1.1198,
                "aerial_lost": 0.4786,
                "total_contest": 0.4649,
                "won_contest": 0.0,
                "ball_recovery": 1.2707,
                "challenges_lost": 0.0,
                "fouls": 0.3776,
                "fouls_drawn": 0.0786,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0183,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.1359,
                "total_progression": 8.6434,
                "progressive_carries": 0.4341,
                "key_pass": 0.1505,
                "shots_off_target": 0.1279,
                "bench_appearance_probability": 0.377,
                "bench_expected_minutes": 15.3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.377,
                "projected_substitutes": 3,
                "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 84.0)",
              "stats": {
                "interceptions": 0.1798,
                "tackles": 0.3241,
                "tackles_won": 0.1945,
                "clearances": 0.4287,
                "aerial_won": 0.1713,
                "total_shots": 0.1279,
                "rating": 6.689,
                "minutes": 15.3,
                "total_pass": 7.273,
                "accurate_pass": 6.1401,
                "duels_won": 0.4725,
                "total_long_balls": 0.9874,
                "accurate_long_balls": 0.3935,
                "total_own_half_passes": 3.1942,
                "accurate_own_half_passes": 2.865,
                "total_opp_half_passes": 4.0788,
                "accurate_opp_half_passes": 3.2751,
                "crosses_total": 0.2785,
                "crosses_accurate": 0.128,
                "touches": 11.0537,
                "possession_lost": 2.3727,
                "dispossessed": 0.168,
                "duels_lost": 1.1198,
                "aerial_lost": 0.4786,
                "total_contest": 0.4649,
                "won_contest": 0.0,
                "ball_recovery": 1.2707,
                "challenges_lost": 0.0,
                "fouls": 0.3776,
                "fouls_drawn": 0.0786,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0183,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.1359,
                "total_progression": 8.6434,
                "progressive_carries": 0.4341,
                "key_pass": 0.1505,
                "shots_off_target": 0.1279,
                "bench_appearance_probability": 0.377,
                "bench_expected_minutes": 15.3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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": 84.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": 384,
                "fifa_rank": 206.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 84.0
              }
            }
          ]
        },
        "Riccardo Calafiori": {
          "player_id": 957602,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 33,
          "height": 188,
          "market_value": 63000000,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7397,
            "minutes": 15,
            "total_pass": 8,
            "accurate_pass": 6,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 3.1836,
            "dispossessed": 0.4002,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0019,
            "assists": 0,
            "expected_goals": 0.0327,
            "expected_assists": 0.0051,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 12,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.251,
            "bench_expected_minutes": 15.24,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.671,
            "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": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 22,
                "rating": 6.9,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0038,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 10,
                "accurate_pass": 7,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 0,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2989,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 42,
                "interceptions": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 82,
                "rating": 6.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5533,
                "expected_assists": 0.056,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0698,
                "expected_assists": 0.0265,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 42,
                "accurate_pass": 33,
                "key_pass": 2,
                "tackles": 3,
                "clearances": 2,
                "aerial_won": 5,
                "duels_won": 8,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0585,
                "expected_assists": 0.0083,
                "total_shots": 1,
                "total_pass": 24,
                "accurate_pass": 20,
                "clearances": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 67,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3872,
                "expected_assists": 0.0321,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 24,
                "accurate_pass": 19,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1059,
                "expected_assists": 0.4593,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 81,
                "rating": 7.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0434,
                "expected_assists": 0.0938,
                "total_shots": 1,
                "total_pass": 24,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 24,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 72,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1309,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 28,
                "key_pass": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 360,
            "combined_rank_score": 232.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 81.0,
            "sofascore_rating": 7.55,
            "sofascore_appearances": 2.0,
            "fifa_rank": 384.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7397,
            "source_file": "data/player_rankings.csv",
            "player_name": "Riccardo Calafiori",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sharof Mukhiddinov",
                  "ranking": 355
                },
                {
                  "player_name": "Matheus Cunha",
                  "ranking": 356
                },
                {
                  "player_name": "Antoine Semenyo",
                  "ranking": 357
                },
                {
                  "player_name": "Cho Sang-Jun",
                  "ranking": 358
                },
                {
                  "player_name": "Cristiano Ronaldo",
                  "ranking": 359
                }
              ],
              "lower": [
                {
                  "player_name": "Patrik Schick",
                  "ranking": 361
                },
                {
                  "player_name": "Tomás Alarcón",
                  "ranking": 362
                },
                {
                  "player_name": "Elionay",
                  "ranking": 363
                },
                {
                  "player_name": "Sergej Milinković-Savić",
                  "ranking": 364
                },
                {
                  "player_name": "Najmiddin Normurodov",
                  "ranking": 365
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "history_matches": 34,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 34,
            "data_confidence": 0.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 15.241278538326158,
            "bench_appearance_prob": 0.251,
            "market_value_adjustment": 1.0136,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 1.0526315789473684,
              "prior_reliability": 0.1267
            },
            "rationale": "Bench projection scaled from XGBoost D_service (34 historical appearances) to 15.2 expected mins (appearance prob 0.25); 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.337,
                "tackles": 0.7289,
                "tackles_won": 0.4512,
                "clearances": 0.7937,
                "aerial_won": 0.8015,
                "total_shots": 0.477,
                "rating": 6.7397,
                "minutes": 16.35,
                "total_pass": 8.4159,
                "accurate_pass": 6.1057,
                "duels_won": 1.961,
                "total_long_balls": 0.7596,
                "accurate_long_balls": 0.1408,
                "total_own_half_passes": 2.865,
                "accurate_own_half_passes": 1.9421,
                "total_opp_half_passes": 5.5509,
                "accurate_opp_half_passes": 4.1636,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.9094,
                "possession_lost": 3.3694,
                "dispossessed": 0.3948,
                "duels_lost": 1.6876,
                "aerial_lost": 1.0232,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.1408,
                "challenges_lost": 0.0,
                "fouls": 0.2696,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0346,
                "expected_assists": 0.0054,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.6719,
                "total_progression": 12.3635,
                "progressive_carries": 0.5355,
                "key_pass": 0.0,
                "shots_off_target": 0.477
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.1506,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 1.172,
                  "aerialWon": 1.7596,
                  "totalClearance_p90": 1.4183,
                  "totalTackle": 1.1392,
                  "totalTackle_p90": 2.191
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.3370450437068939,
                    "model_output": 0.337,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4718
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0412
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.01
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0073
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.007
                        }
                      ],
                      "others": 0.0032,
                      "total": 0.337,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.779925
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.108762
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.028326
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.021144
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.02075
                        }
                      ],
                      "others_margin": 0.009337
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.72891765832901,
                    "model_output": 0.7289,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.749
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.042
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0281
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0214
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0214
                        }
                      ],
                      "others": 0.0765,
                      "total": 0.7289,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.776178
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.063745
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.042193
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.033414
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.033332
                        }
                      ],
                      "others_margin": 0.11101
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.4511828124523163,
                    "model_output": 0.4512,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4578
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.02
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0167
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0151
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0147
                        }
                      ],
                      "others": 0.0343,
                      "total": 0.4512,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.775901
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.052624
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.043971
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.038213
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.035852
                        }
                      ],
                      "others_margin": 0.07922
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.7936515808105469,
                    "model_output": 0.7937,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0775
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.3032
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.1043
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0737
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0558
                        }
                      ],
                      "others": -0.0075,
                      "total": 0.7937,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.937021
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.25693
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.106204
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.082493
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.067337
                        }
                      ],
                      "others_margin": -0.009507
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.8015176057815552,
                    "model_output": 0.8015,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7094
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1929
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1049
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0636
                        },
                        {
                          "name": "error_severity",
                          "contribution": 0.0247
                        }
                      ],
                      "others": 0.0921,
                      "total": 0.8015,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.729624
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.256332
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.131228
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.08882
                        },
                        {
                          "name": "error_severity",
                          "margin": 0.035506
                        }
                      ],
                      "others_margin": 0.121992
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.47704458236694336,
                    "model_output": 0.477,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.2284
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2025
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0212
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0194
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.0123
                        }
                      ],
                      "others": -0.0442,
                      "total": 0.477,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.228408
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.202482
                        },
                        {
                          "name": "history_matches",
                          "margin": 0.02122
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.019416
                        },
                        {
                          "name": "totalProgression",
                          "margin": 0.012329
                        }
                      ],
                      "others_margin": -0.044263
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.739657878875732,
                    "model_output": 6.7397,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0174
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0171
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0138
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0131
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0198,
                      "total": 6.7397,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.017429
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.017053
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.01382
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.013082
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.012731
                        }
                      ],
                      "others_margin": -0.019865
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 5,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0136, quality 0.859)",
              "stats": {
                "interceptions": 0.3416,
                "tackles": 0.7388,
                "tackles_won": 0.4573,
                "clearances": 0.8044,
                "aerial_won": 0.8124,
                "total_shots": 0.4835,
                "rating": 6.7397,
                "minutes": 16.35,
                "total_pass": 8.5304,
                "accurate_pass": 6.1887,
                "duels_won": 1.9877,
                "total_long_balls": 0.7699,
                "accurate_long_balls": 0.1427,
                "total_own_half_passes": 2.904,
                "accurate_own_half_passes": 1.9685,
                "total_opp_half_passes": 5.6264,
                "accurate_opp_half_passes": 4.2202,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 13.085,
                "possession_lost": 3.4152,
                "dispossessed": 0.4002,
                "duels_lost": 1.7106,
                "aerial_lost": 1.0371,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.1427,
                "challenges_lost": 0.0,
                "fouls": 0.2733,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0351,
                "expected_assists": 0.0055,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.6946,
                "total_progression": 12.5316,
                "progressive_carries": 0.5428,
                "key_pass": 0.0,
                "shots_off_target": 0.4835
              },
              "params": {
                "market_value_eur": 63000000,
                "quality_factor": 0.8589,
                "boost_factor": 1.0136,
                "reference_quality": 0.505,
                "history_matches": 34,
                "history_shrink": 0.1282,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0106)",
              "stats": {
                "interceptions": 0.339,
                "tackles": 0.7388,
                "tackles_won": 0.4535,
                "clearances": 0.8044,
                "aerial_won": 0.8124,
                "total_shots": 0.4804,
                "rating": 6.7397,
                "minutes": 16.35,
                "total_pass": 8.5304,
                "accurate_pass": 6.1887,
                "duels_won": 1.9877,
                "total_long_balls": 0.7699,
                "accurate_long_balls": 0.1427,
                "total_own_half_passes": 2.904,
                "accurate_own_half_passes": 1.9685,
                "total_opp_half_passes": 5.6264,
                "accurate_opp_half_passes": 4.2202,
                "crosses_total": 0.001,
                "crosses_accurate": 0.0,
                "touches": 13.085,
                "possession_lost": 3.4152,
                "dispossessed": 0.4002,
                "duels_lost": 1.7106,
                "aerial_lost": 1.0371,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.1427,
                "challenges_lost": 0.0,
                "fouls": 0.2714,
                "fouls_drawn": 0.001,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.002,
                "assist_rate": 0.002,
                "expected_goals": 0.0351,
                "expected_assists": 0.0055,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.6946,
                "total_progression": 12.5316,
                "progressive_carries": 0.5428,
                "key_pass": 0.0,
                "shots_off_target": 0.4835
              },
              "params": {
                "blend_weight": 0.0106,
                "history_matches": 34,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1817,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Arsenal"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 16.4 to 15.2 expected minutes (appearance prob 0.25)",
              "stats": {
                "interceptions": 0.316,
                "tackles": 0.6887,
                "tackles_won": 0.4227,
                "clearances": 0.7499,
                "aerial_won": 0.7573,
                "total_shots": 0.4507,
                "rating": 6.7397,
                "minutes": 15.24,
                "total_pass": 7.9519,
                "accurate_pass": 5.769,
                "duels_won": 1.8529,
                "total_long_balls": 0.7177,
                "accurate_long_balls": 0.133,
                "total_own_half_passes": 2.7071,
                "accurate_own_half_passes": 1.835,
                "total_opp_half_passes": 5.2449,
                "accurate_opp_half_passes": 3.934,
                "crosses_total": 0.0009,
                "crosses_accurate": 0.0,
                "touches": 12.1977,
                "possession_lost": 3.1836,
                "dispossessed": 0.4002,
                "duels_lost": 1.5946,
                "aerial_lost": 1.0371,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.133,
                "challenges_lost": 0.0,
                "fouls": 0.253,
                "fouls_drawn": 0.0009,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0019,
                "assist_rate": 0.0019,
                "expected_goals": 0.0327,
                "expected_assists": 0.0051,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.5797,
                "total_progression": 11.6818,
                "progressive_carries": 0.506,
                "key_pass": 0.0,
                "shots_off_target": 0.4507,
                "bench_appearance_probability": 0.251,
                "bench_expected_minutes": 15.24
              },
              "params": {
                "expected_minutes": 15.24,
                "projection_minutes": 16.35,
                "minutes_scale": 0.9322,
                "appearance_probability": 0.251
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.316,
                "tackles": 0.6887,
                "tackles_won": 0.4227,
                "clearances": 0.7499,
                "aerial_won": 0.7573,
                "total_shots": 0.4507,
                "rating": 6.7397,
                "minutes": 15.24,
                "total_pass": 7.9519,
                "accurate_pass": 5.769,
                "duels_won": 1.8529,
                "total_long_balls": 0.7177,
                "accurate_long_balls": 0.133,
                "total_own_half_passes": 2.7071,
                "accurate_own_half_passes": 1.835,
                "total_opp_half_passes": 5.2449,
                "accurate_opp_half_passes": 3.934,
                "crosses_total": 0.0009,
                "crosses_accurate": 0.0,
                "touches": 12.1977,
                "possession_lost": 3.1836,
                "dispossessed": 0.4002,
                "duels_lost": 1.5946,
                "aerial_lost": 1.0371,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.133,
                "challenges_lost": 0.0,
                "fouls": 0.253,
                "fouls_drawn": 0.0009,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0019,
                "assist_rate": 0.0019,
                "expected_goals": 0.0327,
                "expected_assists": 0.0051,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.5797,
                "total_progression": 11.6818,
                "progressive_carries": 0.506,
                "key_pass": 0.0,
                "shots_off_target": 0.4507,
                "bench_appearance_probability": 0.251,
                "bench_expected_minutes": 15.24
              },
              "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.316,
                "tackles": 0.6887,
                "tackles_won": 0.4227,
                "clearances": 0.7499,
                "aerial_won": 0.7573,
                "total_shots": 0.4507,
                "rating": 6.7397,
                "minutes": 15.24,
                "total_pass": 7.9519,
                "accurate_pass": 5.769,
                "duels_won": 1.8529,
                "total_long_balls": 0.7177,
                "accurate_long_balls": 0.133,
                "total_own_half_passes": 2.7071,
                "accurate_own_half_passes": 1.835,
                "total_opp_half_passes": 5.2449,
                "accurate_opp_half_passes": 3.934,
                "crosses_total": 0.0009,
                "crosses_accurate": 0.0,
                "touches": 12.1977,
                "possession_lost": 3.1836,
                "dispossessed": 0.4002,
                "duels_lost": 1.5946,
                "aerial_lost": 1.0371,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.133,
                "challenges_lost": 0.0,
                "fouls": 0.253,
                "fouls_drawn": 0.0009,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0019,
                "assists": 0,
                "expected_goals": 0.0327,
                "expected_assists": 0.0051,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.5797,
                "total_progression": 11.6818,
                "progressive_carries": 0.506,
                "key_pass": 0.0,
                "shots_off_target": 0.4507,
                "bench_appearance_probability": 0.251,
                "bench_expected_minutes": 15.24,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.251,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 82.0)",
              "stats": {
                "interceptions": 0.316,
                "tackles": 0.6887,
                "tackles_won": 0.4227,
                "clearances": 0.7499,
                "aerial_won": 0.7573,
                "total_shots": 0.4507,
                "rating": 6.7397,
                "minutes": 15.24,
                "total_pass": 7.9519,
                "accurate_pass": 5.769,
                "duels_won": 1.8529,
                "total_long_balls": 0.7177,
                "accurate_long_balls": 0.133,
                "total_own_half_passes": 2.7071,
                "accurate_own_half_passes": 1.835,
                "total_opp_half_passes": 5.2449,
                "accurate_opp_half_passes": 3.934,
                "crosses_total": 0.0009,
                "crosses_accurate": 0.0,
                "touches": 12.1977,
                "possession_lost": 3.1836,
                "dispossessed": 0.4002,
                "duels_lost": 1.5946,
                "aerial_lost": 1.0371,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.133,
                "challenges_lost": 0.0,
                "fouls": 0.253,
                "fouls_drawn": 0.0009,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0019,
                "assists": 0,
                "expected_goals": 0.0327,
                "expected_assists": 0.0051,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.5797,
                "total_progression": 11.6818,
                "progressive_carries": 0.506,
                "key_pass": 0.0,
                "shots_off_target": 0.4507,
                "bench_appearance_probability": 0.251,
                "bench_expected_minutes": 15.24,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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": 82.0
              },
              "params": {
                "match_squad_rank": 13,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 360,
                "fifa_rank": 384.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            }
          ]
        },
        "Martín Zubimendi": {
          "player_id": 966837,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 36,
          "height": 181,
          "market_value": 67000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0201,
            "assist_rate": 0.0379,
            "assists": 0,
            "expected_goals": 0.0318,
            "goal_rate": 0.0348,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.721,
            "minutes": 19,
            "total_pass": 16,
            "accurate_pass": 14,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 6,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 8,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 22,
            "possession_lost": 3.5324,
            "dispossessed": 0.553,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 3,
            "total_progression": 13,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.727,
            "bench_expected_minutes": 18.9,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.671,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0311,
            "projected_assists": 0,
            "assist_probability": 0.0198,
            "finishing_factor": 1.0229,
            "creation_factor": 1.2158,
            "fifa_overall": 86.0
          },
          "latest_10_games": [
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 10,
                "rating": 6.7,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0132,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 16,
                "accurate_pass": 16,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 30,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1275,
                "expected_assists": 0.005,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 9,
                "interceptions": 1,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 9,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 23,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0773,
                "expected_assists": 0.0187,
                "total_shots": 1,
                "total_pass": 10,
                "accurate_pass": 8,
                "interceptions": 3,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 15,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 8,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 22,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0183,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 26,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.039,
                "total_shots": 0,
                "total_pass": 67,
                "accurate_pass": 55,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023942.0,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 39,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 32,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931.0,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Fulham",
              "stats": {
                "minutes": 26,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 54,
            "combined_rank_score": 82.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 65.0,
            "sofascore_rating": 7.62,
            "sofascore_appearances": 5.0,
            "fifa_rank": 99.0,
            "fifa_overall": 86.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.721,
            "source_file": "data/player_rankings.csv",
            "player_name": "Martín Zubimendi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Rayan Cherki",
                  "ranking": 49
                },
                {
                  "player_name": "Rodri",
                  "ranking": 50
                },
                {
                  "player_name": "Matheus Serafim",
                  "ranking": 51
                },
                {
                  "player_name": "Matheus Frizzo",
                  "ranking": 52
                },
                {
                  "player_name": "Florian Wirtz",
                  "ranking": 53
                }
              ],
              "lower": [
                {
                  "player_name": "Luan Dias",
                  "ranking": 55
                },
                {
                  "player_name": "César Yanis",
                  "ranking": 56
                },
                {
                  "player_name": "Pau Cubarsí",
                  "ranking": 57
                },
                {
                  "player_name": "Declan Rice",
                  "ranking": 58
                },
                {
                  "player_name": "Frenkie de Jong",
                  "ranking": 59
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.753,
          "history_matches": 44,
          "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": 44,
            "data_confidence": 0.753,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.9,
            "bench_appearance_prob": 0.727,
            "market_value_adjustment": 1.0111,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 15.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.02
            },
            "rationale": "Bench projection scaled from XGBoost M_service (44 historical appearances) to 18.9 expected mins (appearance prob 0.73); FBref playing time empirical prior: 2.0 sub appearances, 15.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.2331,
                "expected_assists": 0.0232,
                "assists": 0.0395,
                "assist_rate": 0.0395,
                "expected_goals": 0.0343,
                "goals": 0.0363,
                "goal_rate": 0.0363,
                "shots_on_target": 0.0919,
                "total_shots": 0.3716,
                "rating": 6.721,
                "minutes": 19.91,
                "total_pass": 16.6578,
                "accurate_pass": 14.3716,
                "duels_won": 1.5676,
                "total_long_balls": 0.893,
                "accurate_long_balls": 0.5088,
                "total_own_half_passes": 6.4224,
                "accurate_own_half_passes": 5.8261,
                "total_opp_half_passes": 10.2354,
                "accurate_opp_half_passes": 8.5455,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.9486,
                "possession_lost": 3.6803,
                "dispossessed": 0.5469,
                "duels_lost": 2.0132,
                "aerial_won": 0.8277,
                "aerial_lost": 0.6226,
                "interceptions": 0.5029,
                "tackles_won": 0.4131,
                "tackles": 0.68,
                "clearances": 0.3044,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1588,
                "fouls": 0.6849,
                "fouls_drawn": 0.0599,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.5532,
                "total_progression": 13.5045,
                "progressive_carries": 0.2578,
                "shots_off_target": 0.2797
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1501,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.1276,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0922,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0481,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 39.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.4939,
                  "creative_index": 0.0734,
                  "expectedGoals": 0.0359,
                  "expectedAssists": 0.0189,
                  "keyPass": 0.1551
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.23310586810112,
                    "model_output": 0.2331,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4497
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0526
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.046
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0322
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0146
                        }
                      ],
                      "others": -0.062,
                      "total": 0.2331,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.703612
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.127256
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.126165
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.098766
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.048353
                        }
                      ],
                      "others_margin": -0.235813
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.023244837298989296,
                    "model_output": 0.0232,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0339
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.01
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0072
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0026
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0016
                        }
                      ],
                      "others": -0.0062,
                      "total": 0.0232,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.511692
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.219372
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.195638
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.079426
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.051831
                        }
                      ],
                      "others_margin": -0.23479
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.03951689973473549,
                    "model_output": 0.0395,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0201
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0074
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0052
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0033
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0032
                        }
                      ],
                      "others": -0.013,
                      "total": 0.0395,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.269774
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.121137
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.094572
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.060525
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.058933
                        }
                      ],
                      "others_margin": -0.283665
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03430100902915001,
                    "model_output": 0.0343,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0425
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.008
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0034
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0017
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0016
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.0343,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.621201
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.17772
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.086006
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.045475
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.04413
                        }
                      ],
                      "others_margin": -0.098344
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.036265596747398376,
                    "model_output": 0.0363,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.039
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.009
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0036
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0018
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0014
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.0363,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.531479
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.177224
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.080487
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.043567
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.033925
                        }
                      ],
                      "others_margin": -0.091819
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.09193629771471024,
                    "model_output": 0.0919,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.131
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0461
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0157
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0074
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0208,
                      "total": 0.0919,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.531
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.283294
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.117999
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.061162
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.043036
                        }
                      ],
                      "others_margin": -0.204082
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3716261684894562,
                    "model_output": 0.3716,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3541
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2018
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0355
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.021
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0169
                        }
                      ],
                      "others": 0.016,
                      "total": 0.3716,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.354064
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.201828
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.035515
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.021024
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.016856
                        }
                      ],
                      "others_margin": 0.015978
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.720966815948486,
                    "model_output": 6.721,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.094
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0212
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0201
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0115
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.0032,
                      "total": 6.721,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.093965
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.021201
                        },
                        {
                          "name": "rating",
                          "margin": -0.020114
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.011482
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.009387
                        }
                      ],
                      "others_margin": -0.003254
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 44,
                  "role_matches": 10,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0111, quality 0.866)",
              "stats": {
                "key_pass": 0.2357,
                "expected_assists": 0.0235,
                "assists": 0.04,
                "assist_rate": 0.04,
                "expected_goals": 0.0347,
                "goals": 0.0367,
                "goal_rate": 0.0367,
                "shots_on_target": 0.093,
                "total_shots": 0.3758,
                "rating": 6.721,
                "minutes": 19.91,
                "total_pass": 16.8427,
                "accurate_pass": 14.5311,
                "duels_won": 1.585,
                "total_long_balls": 0.9029,
                "accurate_long_balls": 0.5144,
                "total_own_half_passes": 6.4937,
                "accurate_own_half_passes": 5.8908,
                "total_opp_half_passes": 10.349,
                "accurate_opp_half_passes": 8.6404,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 23.2033,
                "possession_lost": 3.7212,
                "dispossessed": 0.553,
                "duels_lost": 2.0355,
                "aerial_won": 0.8369,
                "aerial_lost": 0.6295,
                "interceptions": 0.5085,
                "tackles_won": 0.4177,
                "tackles": 0.6875,
                "clearances": 0.3078,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6925,
                "fouls_drawn": 0.0606,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.5926,
                "total_progression": 13.6544,
                "progressive_carries": 0.2607,
                "shots_off_target": 0.2828
              },
              "params": {
                "market_value_eur": 67000000,
                "quality_factor": 0.8661,
                "boost_factor": 1.0111,
                "reference_quality": 0.505,
                "history_matches": 44,
                "history_shrink": 0.102,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0013)",
              "stats": {
                "key_pass": 0.2357,
                "expected_assists": 0.0235,
                "assists": 0.0399,
                "assist_rate": 0.0399,
                "expected_goals": 0.0347,
                "goals": 0.0367,
                "goal_rate": 0.0367,
                "shots_on_target": 0.0929,
                "total_shots": 0.3753,
                "rating": 6.721,
                "minutes": 19.91,
                "total_pass": 16.8427,
                "accurate_pass": 14.5311,
                "duels_won": 1.585,
                "total_long_balls": 0.9029,
                "accurate_long_balls": 0.5144,
                "total_own_half_passes": 6.4937,
                "accurate_own_half_passes": 5.8908,
                "total_opp_half_passes": 10.349,
                "accurate_opp_half_passes": 8.6404,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 23.2033,
                "possession_lost": 3.7212,
                "dispossessed": 0.553,
                "duels_lost": 2.0355,
                "aerial_won": 0.8369,
                "aerial_lost": 0.6295,
                "interceptions": 0.5078,
                "tackles_won": 0.4181,
                "tackles": 0.6875,
                "clearances": 0.3078,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6916,
                "fouls_drawn": 0.0605,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.5926,
                "total_progression": 13.6544,
                "progressive_carries": 0.2607,
                "shots_off_target": 0.2828
              },
              "params": {
                "blend_weight": 0.0013,
                "history_matches": 44,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2212,
                "prior_reliability": 0.02,
                "competition": "Premier League",
                "squad": "Arsenal"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.9 to 18.9 expected minutes (appearance prob 0.73)",
              "stats": {
                "key_pass": 0.2237,
                "expected_assists": 0.0223,
                "assists": 0.0379,
                "assist_rate": 0.0379,
                "expected_goals": 0.0329,
                "goals": 0.0348,
                "goal_rate": 0.0348,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9
              },
              "params": {
                "expected_minutes": 18.9,
                "projection_minutes": 19.91,
                "minutes_scale": 0.9493,
                "appearance_probability": 0.727
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.2237,
                "expected_assists": 0.0223,
                "assists": 0.0379,
                "assist_rate": 0.0379,
                "expected_goals": 0.0329,
                "goals": 0.0348,
                "goal_rate": 0.0348,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9
              },
              "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.2237,
                "expected_assists": 0.0223,
                "assist_rate": 0.0379,
                "assists": 0,
                "expected_goals": 0.0329,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "key_pass": 0.2237,
                "expected_assists": 0.0201,
                "assist_rate": 0.0379,
                "assists": 0,
                "expected_goals": 0.0318,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.0229,
                "creation_factor": 1.2158
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 0.727
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 86.0)",
              "stats": {
                "key_pass": 0.2237,
                "expected_assists": 0.0201,
                "assist_rate": 0.0379,
                "assists": 0,
                "expected_goals": 0.0318,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.0229,
                "creation_factor": 1.2158,
                "fifa_overall": 86.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 54,
                "fifa_rank": 99.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 86.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.2237,
                "expected_assists": 0.0201,
                "assist_rate": 0.0379,
                "assists": 0,
                "expected_goals": 0.0318,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0311,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0229,
                "creation_factor": 1.2158,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0311,
                "goal_rate": 0.0348,
                "scorer_weight": 0.0325,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0156,
                "finishing_factor": 1.0229,
                "appearance_weight": 0.727,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.2237,
                "expected_assists": 0.0201,
                "assist_rate": 0.0379,
                "assists": 0,
                "expected_goals": 0.0318,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0311,
                "projected_assists": 0,
                "assist_probability": 0.0198,
                "finishing_factor": 1.0229,
                "creation_factor": 1.2158,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0198,
                "assist_rate": 0.0379,
                "provider_weight": 0.0244,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0157,
                "creation_factor": 1.2158,
                "appearance_weight": 0.727,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Max Dowman": {
          "player_id": 1917626,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 56,
          "height": 183,
          "market_value": 52000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0406,
            "assist_rate": 0.0738,
            "assists": 0,
            "expected_goals": 0.0454,
            "goal_rate": 0.0798,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6764,
            "minutes": 24,
            "total_pass": 8,
            "accurate_pass": 7,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 5.2782,
            "dispossessed": 0.5023,
            "duels_lost": 4,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 3,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1291,
            "ball_carries": 8,
            "total_progression": 39,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.57,
            "bench_expected_minutes": 23.53,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.671,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0436,
            "projected_assists": 0,
            "assist_probability": 0.0392,
            "finishing_factor": 1.1811,
            "creation_factor": 1.1506,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 10,
                "rating": 6.4,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 1,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 9,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0838,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "key_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 62,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1648,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 21,
                "key_pass": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931.0,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Fulham",
              "stats": {
                "minutes": 12,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0761,
                "expected_assists": 0.0038,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 3,
                "accurate_pass": 3,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025021.0,
              "match_date": "2026-04-11",
              "home_team": "Arsenal",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 36,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1046,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023987.0,
              "match_date": "2026-03-14",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 16,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.9692,
                "expected_assists": 0.0215,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025103.0,
              "match_date": "2025-08-31",
              "home_team": "Liverpool FC",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 10,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.058,
                "expected_assists": 0.0014,
                "total_shots": 1,
                "total_pass": 2,
                "accurate_pass": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025065.0,
              "match_date": "2025-08-23",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 26,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0792,
                "expected_assists": 0.0238,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 2,
                "accurate_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1510,
            "combined_rank_score": 783.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 622.0,
            "sofascore_rating": 6.7667,
            "sofascore_appearances": 6.0,
            "fifa_rank": 945.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6764,
            "source_file": "data/player_rankings.csv",
            "player_name": "Max Dowman",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Manuel Rivera",
                  "ranking": 1505
                },
                {
                  "player_name": "Dong-hyun Kang",
                  "ranking": 1506
                },
                {
                  "player_name": "Hwang Seok-ki",
                  "ranking": 1507
                },
                {
                  "player_name": "Ollabergan Karimov",
                  "ranking": 1508
                },
                {
                  "player_name": "Álvaro Fidalgo",
                  "ranking": 1509
                }
              ],
              "lower": [
                {
                  "player_name": "Lucas Evangelista",
                  "ranking": 1511
                },
                {
                  "player_name": "Fábio",
                  "ranking": 1512
                },
                {
                  "player_name": "Mukhammadaziz Ibrakhimov",
                  "ranking": 1513
                },
                {
                  "player_name": "Igor Golban",
                  "ranking": 1514
                },
                {
                  "player_name": "German Barkovskiy",
                  "ranking": 1515
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 8,
          "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": 8,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 23.530211855440346,
            "bench_appearance_prob": 0.5695550843381976,
            "market_value_adjustment": 1.0376,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "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 M_service (8 historical appearances) to 23.5 expected mins (appearance prob 0.57); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4582,
                "expected_assists": 0.0388,
                "assists": 0.0496,
                "assist_rate": 0.0496,
                "expected_goals": 0.0403,
                "goals": 0.0537,
                "goal_rate": 0.0537,
                "shots_on_target": 0.2263,
                "total_shots": 0.5463,
                "rating": 6.6764,
                "minutes": 16.42,
                "total_pass": 5.3115,
                "accurate_pass": 4.9251,
                "duels_won": 1.7122,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 0.6848,
                "accurate_own_half_passes": 0.6848,
                "total_opp_half_passes": 4.6267,
                "accurate_opp_half_passes": 4.2403,
                "crosses_total": 0.9808,
                "crosses_accurate": 0.3232,
                "touches": 12.4504,
                "possession_lost": 3.5498,
                "dispossessed": 0.4841,
                "duels_lost": 2.7004,
                "aerial_won": 0.0,
                "aerial_lost": 0.2951,
                "interceptions": 0.1595,
                "tackles_won": 0.1665,
                "tackles": 0.1665,
                "clearances": 0.0,
                "total_contest": 2.2051,
                "won_contest": 0.8535,
                "challenges_lost": 0.2132,
                "fouls": 0.3564,
                "fouls_drawn": 0.6921,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1147,
                "ball_carries": 5.2865,
                "total_progression": 26.4655,
                "progressive_carries": 0.9578,
                "shots_off_target": 0.32
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.2062,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.1753,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.149,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1266,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Bournemouth",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.1076,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Everton",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0915,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2025-08-31",
                    "opponent": "Liverpool FC",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0778,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2025-08-23",
                    "opponent": "Leeds United",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0661,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 8.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.5195,
                  "creative_index": 0.2794,
                  "expectedGoals": 0.108,
                  "expectedAssists": 0.0558,
                  "keyPass": 0.6148
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.4581705927848816,
                    "model_output": 0.4582,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4087
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0352
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0295
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0187
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0176
                        }
                      ],
                      "others": 0.0051,
                      "total": 0.4582,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.614482
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.075848
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.06839
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.043769
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.039611
                        }
                      ],
                      "others_margin": 0.011123
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03875534608960152,
                    "model_output": 0.0388,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0404
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.004
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0033
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0021
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0009,
                      "total": 0.0388,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.647571
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.095623
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.079155
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.049592
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.045255
                        }
                      ],
                      "others_margin": -0.022679
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04964131489396095,
                    "model_output": 0.0496,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0218
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0063
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0048
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0044
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0034,
                      "total": 0.0496,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.295512
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.104429
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.087975
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.081347
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.064858
                        }
                      ],
                      "others_margin": -0.068033
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04031059890985489,
                    "model_output": 0.0403,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0451
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0092
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0057
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0038
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0041,
                      "total": 0.0403,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.674953
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.220435
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.141492
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.085226
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.057959
                        }
                      ],
                      "others_margin": -0.096548
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05368460714817047,
                    "model_output": 0.0537,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.041
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0086
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0047
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.004
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0036
                        }
                      ],
                      "others": 0.0036,
                      "total": 0.0537,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.568643
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.175871
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.100223
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.077923
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.068489
                        }
                      ],
                      "others_margin": 0.068613
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.22626997530460358,
                    "model_output": 0.2263,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1298
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0434
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0388
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0121
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0081
                        }
                      ],
                      "others": 0.0134,
                      "total": 0.2263,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.524619
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.207746
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.183408
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.060973
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.038877
                        }
                      ],
                      "others_margin": 0.060492
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5462558269500732,
                    "model_output": 0.5463,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4322
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1841
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1189
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0409
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0323
                        }
                      ],
                      "others": 0.0502,
                      "total": 0.5463,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.432183
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.184055
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.118852
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.040941
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.032251
                        }
                      ],
                      "others_margin": 0.050017
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.676353931427002,
                    "model_output": 6.6764,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.081
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0449
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0393
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0199
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0076
                        }
                      ],
                      "others": -0.0281,
                      "total": 6.6764,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.081001
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.044862
                        },
                        {
                          "name": "rating",
                          "margin": -0.039297
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.019899
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.007596
                        }
                      ],
                      "others_margin": -0.028195
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 8,
                  "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.0376, quality 0.831)",
              "stats": {
                "key_pass": 0.4754,
                "expected_assists": 0.0402,
                "assists": 0.0515,
                "assist_rate": 0.0515,
                "expected_goals": 0.0418,
                "goals": 0.0557,
                "goal_rate": 0.0557,
                "shots_on_target": 0.2348,
                "total_shots": 0.5668,
                "rating": 6.6764,
                "minutes": 16.42,
                "total_pass": 5.5112,
                "accurate_pass": 5.1103,
                "duels_won": 1.7766,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 0.7105,
                "accurate_own_half_passes": 0.7105,
                "total_opp_half_passes": 4.8007,
                "accurate_opp_half_passes": 4.3997,
                "crosses_total": 1.0177,
                "crosses_accurate": 0.3354,
                "touches": 12.9185,
                "possession_lost": 3.6833,
                "dispossessed": 0.5023,
                "duels_lost": 2.8019,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.1655,
                "tackles_won": 0.1728,
                "tackles": 0.1728,
                "clearances": 0.0,
                "total_contest": 2.288,
                "won_contest": 0.8856,
                "challenges_lost": 0.2212,
                "fouls": 0.3698,
                "fouls_drawn": 0.7181,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.119,
                "ball_carries": 5.4853,
                "total_progression": 27.4606,
                "progressive_carries": 0.9938,
                "shots_off_target": 0.332
              },
              "params": {
                "market_value_eur": 52000000,
                "quality_factor": 0.8309,
                "boost_factor": 1.0376,
                "reference_quality": 0.505,
                "history_matches": 8,
                "history_shrink": 0.3846,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 16.4 to 23.5 expected minutes (appearance prob 0.57)",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0576,
                "assists": 0.0738,
                "assist_rate": 0.0738,
                "expected_goals": 0.0599,
                "goals": 0.0798,
                "goal_rate": 0.0798,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1705,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53
              },
              "params": {
                "expected_minutes": 23.53,
                "projection_minutes": 16.42,
                "minutes_scale": 1.433,
                "appearance_probability": 0.57
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0576,
                "assists": 0.0738,
                "assist_rate": 0.0738,
                "expected_goals": 0.0599,
                "goals": 0.0798,
                "goal_rate": 0.0798,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1705,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0576,
                "assist_rate": 0.0738,
                "assists": 0,
                "expected_goals": 0.0599,
                "goal_rate": 0.0798,
                "goals": 0,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1705,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0406,
                "assist_rate": 0.0738,
                "assists": 0,
                "expected_goals": 0.0454,
                "goal_rate": 0.0798,
                "goals": 0,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1291,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.1811,
                "creation_factor": 1.1506
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 0.57
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0599,
                  "after": 0.0454
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0576,
                  "after": 0.0406
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 79.0)",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0406,
                "assist_rate": 0.0738,
                "assists": 0,
                "expected_goals": 0.0454,
                "goal_rate": 0.0798,
                "goals": 0,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1291,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.1811,
                "creation_factor": 1.1506,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 1510,
                "fifa_rank": 945.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0406,
                "assist_rate": 0.0738,
                "assists": 0,
                "expected_goals": 0.0454,
                "goal_rate": 0.0798,
                "goals": 0,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1291,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0436,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1811,
                "creation_factor": 1.1506,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0436,
                "goal_rate": 0.0798,
                "scorer_weight": 0.0536,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0257,
                "finishing_factor": 1.1811,
                "appearance_weight": 0.57,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.6813,
                "expected_assists": 0.0406,
                "assist_rate": 0.0738,
                "assists": 0,
                "expected_goals": 0.0454,
                "goal_rate": 0.0798,
                "goals": 0,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1291,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0436,
                "projected_assists": 0,
                "assist_probability": 0.0392,
                "finishing_factor": 1.1811,
                "creation_factor": 1.1506,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0392,
                "assist_rate": 0.0738,
                "provider_weight": 0.0467,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0299,
                "creation_factor": 1.1506,
                "appearance_weight": 0.57,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Kai Havertz": {
          "player_id": 836705,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 29,
          "height": 193,
          "market_value": 58000000,
          "stats": {
            "expected_goals": 0.1266,
            "goal_rate": 0.1428,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0317,
            "key_pass": 0,
            "rating": 6.6834,
            "minutes": 27,
            "total_pass": 10,
            "accurate_pass": 8,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 16,
            "possession_lost": 3.7124,
            "dispossessed": 0.26,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.2121,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.0153,
            "offsides": 0,
            "ball_carries": 5,
            "total_progression": 13,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.367,
            "bench_expected_minutes": 26.92,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.671,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363907.0,
              "match_date": "2026-11-01 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Liverpool",
              "away_team": "Arsenal",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Arsenal",
              "opponent": "Liverpool",
              "stats": {},
              "has_player_stats": false,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 22,
                "rating": 6.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0044,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 7,
                "accurate_pass": 7,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 2,
                "ball_recovery": 1,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 66,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.329,
                "expected_assists": 0.0279,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 16,
                "accurate_pass": 13,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 63,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1423,
                "expected_assists": 0.0203,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 16,
                "aerial_won": 2,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7791,
                "expected_assists": 0.0232,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 27,
                "accurate_pass": 23,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3385,
                "expected_assists": 0.0166,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 78,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2698,
                "expected_assists": 0.2681,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 26,
                "accurate_pass": 19,
                "key_pass": 3,
                "interceptions": 1,
                "aerial_won": 4,
                "duels_won": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0249,
                "expected_assists": 0.032,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 11,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2608,
                "expected_assists": 0.0259,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 25,
                "accurate_pass": 20,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.3989,
                "expected_assists": 0.1832,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 16,
                "accurate_pass": 16,
                "key_pass": 3,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 635,
            "combined_rank_score": 324.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 143.0,
            "sofascore_rating": 7.3333,
            "sofascore_appearances": 6.0,
            "fifa_rank": 505.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6834,
            "source_file": "data/player_rankings.csv",
            "player_name": "Kai Havertz",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kingsley Coman",
                  "ranking": 630
                },
                {
                  "player_name": "Ferran Torres",
                  "ranking": 631
                },
                {
                  "player_name": "Achraf Hakimi",
                  "ranking": 632
                },
                {
                  "player_name": "Bong-jin Choi",
                  "ranking": 633
                },
                {
                  "player_name": "João Félix",
                  "ranking": 634
                }
              ],
              "lower": [
                {
                  "player_name": "Makhmud Makhamadzhonov",
                  "ranking": 636
                },
                {
                  "player_name": "Ji-hyun Kim",
                  "ranking": 637
                },
                {
                  "player_name": "Nelson Sepúlveda",
                  "ranking": 638
                },
                {
                  "player_name": "Ratinho",
                  "ranking": 639
                },
                {
                  "player_name": "Trincão",
                  "ranking": 640
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 20,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 20,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 26.917471890209466,
            "bench_appearance_prob": 0.367,
            "market_value_adjustment": 1.0206,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.5,
              "assists_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "Bench projection scaled from XGBoost F_service (20 historical appearances) to 26.9 expected mins (appearance prob 0.37); 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.12,
                "goals": 0.1353,
                "goal_rate": 0.1353,
                "shots_on_target": 0.4398,
                "total_shots": 0.9783,
                "expected_assists": 0.0301,
                "key_pass": 0.4201,
                "rating": 6.6834,
                "minutes": 26.05,
                "total_pass": 9.3449,
                "accurate_pass": 7.656,
                "duels_won": 2.8593,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.7914,
                "accurate_opp_half_passes": 5.1025,
                "crosses_total": 0.174,
                "crosses_accurate": 0.0,
                "touches": 15.2467,
                "possession_lost": 3.5203,
                "dispossessed": 0.2548,
                "duels_lost": 2.541,
                "aerial_lost": 1.5681,
                "total_contest": 0.4651,
                "won_contest": 0.2326,
                "ball_recovery": 0.8761,
                "challenges_lost": 0.1069,
                "fouls": 0.3787,
                "fouls_drawn": 0.8761,
                "assists": 0.2047,
                "assist_rate": 0.2047,
                "interceptions": 0.2047,
                "tackles_won": 0.5888,
                "tackles": 0.9192,
                "clearances": 0.3116,
                "blocks": 0.0,
                "big_chances_created": 0.5494,
                "big_chances_missed": 0.2292,
                "xgot": 0.0145,
                "offsides": 0.0,
                "ball_carries": 4.284,
                "total_progression": 12.7733,
                "progressive_carries": 0.5604,
                "shots_off_target": 0.5385
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:06:26.876327+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 612,
                    "rows": 17180
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.156,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1326,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1127,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0958,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0815,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.0692,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0589,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.05,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0425,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0361,
                    "rating": 7.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "accuratePass": 14.014,
                  "expectedGoals": 0.2756,
                  "accurateOppositionHalfPasses": 10.5634,
                  "totalShots": 1.6849,
                  "totalOppositionHalfPasses": 13.3786
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.12001404166221619,
                    "model_output": 0.12,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2767
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0987
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.036
                      },
                      {
                        "name": "goals",
                        "importance": 0.0336
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.1929,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0922
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0124
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.006
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0034
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0026
                        }
                      ],
                      "others": 0.0121,
                      "total": 0.12,
                      "log_link": true,
                      "margin_base": -1.645586,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.649635
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.115851
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.054527
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.031246
                        },
                        {
                          "name": "goals",
                          "margin": -0.024178
                        }
                      ],
                      "others_margin": 0.106683
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.1352635771036148,
                    "model_output": 0.1353,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1491
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0805
                      },
                      {
                        "name": "goals",
                        "importance": 0.056
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0343
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.1972,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0791
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.016
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.011
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0067
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0062
                        }
                      ],
                      "others": 0.0117,
                      "total": 0.1353,
                      "log_link": true,
                      "margin_base": -1.623746,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.513112
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.127425
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.085338
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.05319
                        },
                        {
                          "name": "goals",
                          "margin": -0.04868
                        }
                      ],
                      "others_margin": 0.089731
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.43975701928138733,
                    "model_output": 0.4398,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2173
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0637
                      },
                      {
                        "name": "goals",
                        "importance": 0.0596
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0393
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.5269,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.204
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0262
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0199
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0178
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0177
                        }
                      ],
                      "others": 0.0353,
                      "total": 0.4398,
                      "log_link": true,
                      "margin_base": -0.640773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.489601
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.077935
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.055415
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.04724
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.044624
                        }
                      ],
                      "others_margin": 0.083627
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9782698750495911,
                    "model_output": 0.9783,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3005
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0627
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0526
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0309
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0307
                      }
                    ],
                    "decomposition": {
                      "base": 1.3756,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.6038
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0798
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0481
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.039
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": 0.0278
                        }
                      ],
                      "others": 0.0118,
                      "total": 0.9783,
                      "log_link": false,
                      "margin_base": 1.375643,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.603802
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.079766
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.048123
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.039036
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": 0.027838
                        }
                      ],
                      "others_margin": 0.011665
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.030116906389594078,
                    "model_output": 0.0301,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1287
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1119
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0634
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0522
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.051
                      }
                    ],
                    "decomposition": {
                      "base": 0.065,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0221
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0086
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0052
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.004
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.0089,
                      "total": 0.0301,
                      "log_link": true,
                      "margin_base": -2.733324,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.416015
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.183453
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.106135
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.089301
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.081005
                        }
                      ],
                      "others_margin": -0.260342
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.42008134722709656,
                    "model_output": 0.4201,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1579
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1341
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0953
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.069
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.6917,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2258
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0624
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0252
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0228
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0216
                        }
                      ],
                      "others": -0.0818,
                      "total": 0.4201,
                      "log_link": true,
                      "margin_base": -0.368585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.395127
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.125766
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.048831
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.046399
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.043985
                        }
                      ],
                      "others_margin": -0.178116
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.683390140533447,
                    "model_output": 6.6834,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.048
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0462
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0455
                      },
                      {
                        "name": "rating",
                        "importance": 0.0455
                      }
                    ],
                    "decomposition": {
                      "base": 6.7733,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0664
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0266
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0148
                        },
                        {
                          "name": "touches",
                          "contribution": -0.01
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0093
                        }
                      ],
                      "others": -0.0346,
                      "total": 6.6834,
                      "log_link": false,
                      "margin_base": 6.773334,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.066418
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.026565
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.01485
                        },
                        {
                          "name": "touches",
                          "margin": -0.009991
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.009318
                        }
                      ],
                      "others_margin": -0.034568
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 20,
                  "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.0206, quality 0.848)",
              "stats": {
                "expected_goals": 0.1225,
                "goals": 0.1381,
                "goal_rate": 0.1381,
                "shots_on_target": 0.4488,
                "total_shots": 0.9984,
                "expected_assists": 0.0307,
                "key_pass": 0.4287,
                "rating": 6.6834,
                "minutes": 26.05,
                "total_pass": 9.5374,
                "accurate_pass": 7.8137,
                "duels_won": 2.9182,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.9313,
                "accurate_opp_half_passes": 5.2076,
                "crosses_total": 0.1776,
                "crosses_accurate": 0.0,
                "touches": 15.5608,
                "possession_lost": 3.5928,
                "dispossessed": 0.26,
                "duels_lost": 2.5933,
                "aerial_lost": 1.6004,
                "total_contest": 0.4747,
                "won_contest": 0.2374,
                "ball_recovery": 0.8941,
                "challenges_lost": 0.1091,
                "fouls": 0.3865,
                "fouls_drawn": 0.8941,
                "assists": 0.2089,
                "assist_rate": 0.2089,
                "interceptions": 0.2089,
                "tackles_won": 0.6009,
                "tackles": 0.9381,
                "clearances": 0.318,
                "blocks": 0.0,
                "big_chances_created": 0.5607,
                "big_chances_missed": 0.2339,
                "xgot": 0.0148,
                "offsides": 0.0,
                "ball_carries": 4.3723,
                "total_progression": 13.0364,
                "progressive_carries": 0.5719,
                "shots_off_target": 0.5496
              },
              "params": {
                "market_value_eur": 58000000,
                "quality_factor": 0.8478,
                "boost_factor": 1.0206,
                "reference_quality": 0.505,
                "history_matches": 20,
                "history_shrink": 0.2,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0173)",
              "stats": {
                "expected_goals": 0.1225,
                "goals": 0.1382,
                "goal_rate": 0.1382,
                "shots_on_target": 0.446,
                "total_shots": 0.9861,
                "expected_assists": 0.0307,
                "key_pass": 0.4287,
                "rating": 6.6834,
                "minutes": 26.05,
                "total_pass": 9.5374,
                "accurate_pass": 7.8137,
                "duels_won": 2.9182,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.9313,
                "accurate_opp_half_passes": 5.2076,
                "crosses_total": 0.1745,
                "crosses_accurate": 0.0,
                "touches": 15.5608,
                "possession_lost": 3.5928,
                "dispossessed": 0.26,
                "duels_lost": 2.5933,
                "aerial_lost": 1.6004,
                "total_contest": 0.4747,
                "won_contest": 0.2374,
                "ball_recovery": 0.8941,
                "challenges_lost": 0.1091,
                "fouls": 0.3873,
                "fouls_drawn": 0.8886,
                "assists": 0.2053,
                "assist_rate": 0.2053,
                "interceptions": 0.2078,
                "tackles_won": 0.5905,
                "tackles": 0.9381,
                "clearances": 0.318,
                "blocks": 0.0,
                "big_chances_created": 0.5607,
                "big_chances_missed": 0.2339,
                "xgot": 0.0148,
                "offsides": 0.0176,
                "ball_carries": 4.3723,
                "total_progression": 13.0364,
                "progressive_carries": 0.5719,
                "shots_off_target": 0.5496
              },
              "params": {
                "blend_weight": 0.0173,
                "history_matches": 20,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2894,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Arsenal"
              },
              "changes": [
                {
                  "stat": "totalOffside",
                  "before": 0.0,
                  "after": 0.0176
                },
                {
                  "stat": "totalShots",
                  "before": 0.9984,
                  "after": 0.9861
                },
                {
                  "stat": "wonTackle",
                  "before": 0.6009,
                  "after": 0.5905
                },
                {
                  "stat": "wasFouled",
                  "before": 0.8941,
                  "after": 0.8886
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 26.1 to 26.9 expected minutes (appearance prob 0.37)",
              "stats": {
                "expected_goals": 0.1266,
                "goals": 0.1428,
                "goal_rate": 0.1428,
                "shots_on_target": 0.4609,
                "total_shots": 1.0288,
                "expected_assists": 0.0317,
                "key_pass": 0.443,
                "rating": 6.6834,
                "minutes": 26.92,
                "total_pass": 9.855,
                "accurate_pass": 8.0739,
                "duels_won": 3.0154,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1621,
                "accurate_opp_half_passes": 5.381,
                "crosses_total": 0.1803,
                "crosses_accurate": 0.0,
                "touches": 16.079,
                "possession_lost": 3.7124,
                "dispossessed": 0.26,
                "duels_lost": 2.6797,
                "aerial_lost": 1.6004,
                "total_contest": 0.4905,
                "won_contest": 0.2453,
                "ball_recovery": 0.9239,
                "challenges_lost": 0.1091,
                "fouls": 0.4002,
                "fouls_drawn": 0.9182,
                "assists": 0.2121,
                "assist_rate": 0.2121,
                "interceptions": 0.2147,
                "tackles_won": 0.6102,
                "tackles": 0.9693,
                "clearances": 0.3286,
                "blocks": 0.0,
                "big_chances_created": 0.5794,
                "big_chances_missed": 0.2417,
                "xgot": 0.0153,
                "offsides": 0.0176,
                "ball_carries": 4.5179,
                "total_progression": 13.4705,
                "progressive_carries": 0.5909,
                "shots_off_target": 0.5679,
                "bench_appearance_probability": 0.367,
                "bench_expected_minutes": 26.92
              },
              "params": {
                "expected_minutes": 26.92,
                "projection_minutes": 26.05,
                "minutes_scale": 1.0333,
                "appearance_probability": 0.367
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1266,
                "goals": 0.1428,
                "goal_rate": 0.1428,
                "shots_on_target": 0.4609,
                "total_shots": 1.0288,
                "expected_assists": 0.0317,
                "key_pass": 0.443,
                "rating": 6.6834,
                "minutes": 26.92,
                "total_pass": 9.855,
                "accurate_pass": 8.0739,
                "duels_won": 3.0154,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1621,
                "accurate_opp_half_passes": 5.381,
                "crosses_total": 0.1803,
                "crosses_accurate": 0.0,
                "touches": 16.079,
                "possession_lost": 3.7124,
                "dispossessed": 0.26,
                "duels_lost": 2.6797,
                "aerial_lost": 1.6004,
                "total_contest": 0.4905,
                "won_contest": 0.2453,
                "ball_recovery": 0.9239,
                "challenges_lost": 0.1091,
                "fouls": 0.4002,
                "fouls_drawn": 0.9182,
                "assists": 0.2121,
                "assist_rate": 0.2121,
                "interceptions": 0.2147,
                "tackles_won": 0.6102,
                "tackles": 0.9693,
                "clearances": 0.3286,
                "blocks": 0.0,
                "big_chances_created": 0.5794,
                "big_chances_missed": 0.2417,
                "xgot": 0.0153,
                "offsides": 0.0176,
                "ball_carries": 4.5179,
                "total_progression": 13.4705,
                "progressive_carries": 0.5909,
                "shots_off_target": 0.5679,
                "bench_appearance_probability": 0.367,
                "bench_expected_minutes": 26.92
              },
              "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.1266,
                "goal_rate": 0.1428,
                "goals": 0,
                "shots_on_target": 0.4609,
                "total_shots": 1.0288,
                "expected_assists": 0.0317,
                "key_pass": 0.443,
                "rating": 6.6834,
                "minutes": 26.92,
                "total_pass": 9.855,
                "accurate_pass": 8.0739,
                "duels_won": 3.0154,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1621,
                "accurate_opp_half_passes": 5.381,
                "crosses_total": 0.1803,
                "crosses_accurate": 0.0,
                "touches": 16.079,
                "possession_lost": 3.7124,
                "dispossessed": 0.26,
                "duels_lost": 2.6797,
                "aerial_lost": 1.6004,
                "total_contest": 0.4905,
                "won_contest": 0.2453,
                "ball_recovery": 0.9239,
                "challenges_lost": 0.1091,
                "fouls": 0.4002,
                "fouls_drawn": 0.9182,
                "assist_rate": 0.2121,
                "assists": 0,
                "interceptions": 0.2147,
                "tackles_won": 0.6102,
                "tackles": 0.9693,
                "clearances": 0.3286,
                "blocks": 0.0,
                "big_chances_created": 0.5794,
                "big_chances_missed": 0.2417,
                "xgot": 0.0153,
                "offsides": 0.0176,
                "ball_carries": 4.5179,
                "total_progression": 13.4705,
                "progressive_carries": 0.5909,
                "shots_off_target": 0.5679,
                "bench_appearance_probability": 0.367,
                "bench_expected_minutes": 26.92,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.367,
                "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 81.0)",
              "stats": {
                "expected_goals": 0.1266,
                "goal_rate": 0.1428,
                "goals": 0,
                "shots_on_target": 0.4609,
                "total_shots": 1.0288,
                "expected_assists": 0.0317,
                "key_pass": 0.443,
                "rating": 6.6834,
                "minutes": 26.92,
                "total_pass": 9.855,
                "accurate_pass": 8.0739,
                "duels_won": 3.0154,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1621,
                "accurate_opp_half_passes": 5.381,
                "crosses_total": 0.1803,
                "crosses_accurate": 0.0,
                "touches": 16.079,
                "possession_lost": 3.7124,
                "dispossessed": 0.26,
                "duels_lost": 2.6797,
                "aerial_lost": 1.6004,
                "total_contest": 0.4905,
                "won_contest": 0.2453,
                "ball_recovery": 0.9239,
                "challenges_lost": 0.1091,
                "fouls": 0.4002,
                "fouls_drawn": 0.9182,
                "assist_rate": 0.2121,
                "assists": 0,
                "interceptions": 0.2147,
                "tackles_won": 0.6102,
                "tackles": 0.9693,
                "clearances": 0.3286,
                "blocks": 0.0,
                "big_chances_created": 0.5794,
                "big_chances_missed": 0.2417,
                "xgot": 0.0153,
                "offsides": 0.0176,
                "ball_carries": 4.5179,
                "total_progression": 13.4705,
                "progressive_carries": 0.5909,
                "shots_off_target": 0.5679,
                "bench_appearance_probability": 0.367,
                "bench_expected_minutes": 26.92,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 635,
                "fifa_rank": 505.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            }
          ]
        },
        "Viktor Gyökeres": {
          "player_id": 804508,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 14,
          "height": 187,
          "market_value": 52000000,
          "stats": {
            "expected_goals": 0.0807,
            "goal_rate": 0.1218,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0341,
            "key_pass": 0,
            "rating": 6.6226,
            "minutes": 27,
            "total_pass": 6,
            "accurate_pass": 4,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 11,
            "possession_lost": 3.805,
            "dispossessed": 0.3458,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0891,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 19,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.63,
            "bench_expected_minutes": 26.85,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.671,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0757,
            "projected_assists": 0,
            "assist_probability": 0.0332,
            "finishing_factor": 1.1735,
            "creation_factor": 0.8,
            "fifa_overall": 86.0
          },
          "latest_10_games": [
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 68,
                "rating": 6.4,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.065,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 13,
                "accurate_pass": 10,
                "key_pass": 3,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 3,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 24,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0778,
                "expected_assists": 0.0339,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 5,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 27,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1574,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 7,
                "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.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 17,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2344,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "key_pass": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 12,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 16,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1644,
                "expected_assists": 0.103,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 3,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 17,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0071,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023942.0,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1151,
                "expected_assists": 0.0283,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 15,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931.0,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Fulham",
              "stats": {
                "minutes": 64,
                "rating": 8.2,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 1.7004,
                "expected_assists": 0.0193,
                "total_shots": 4,
                "shots_on_target": 4,
                "total_pass": 9,
                "accurate_pass": 8,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025045.0,
              "match_date": "2026-04-25",
              "home_team": "Arsenal",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 56,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0298,
                "expected_assists": 0.0072,
                "total_shots": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 116,
            "combined_rank_score": 110.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 125.0,
            "sofascore_rating": 7.3833,
            "sofascore_appearances": 6.0,
            "fifa_rank": 96.0,
            "fifa_overall": 86.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6226,
            "source_file": "data/player_rankings.csv",
            "player_name": "Viktor Gyökeres",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jérémy Doku",
                  "ranking": 111
                },
                {
                  "player_name": "Bruno Lamas",
                  "ranking": 112
                },
                {
                  "player_name": "Jun-ho Son",
                  "ranking": 113
                },
                {
                  "player_name": "Luka Modrić",
                  "ranking": 114
                },
                {
                  "player_name": "Jean Meneses",
                  "ranking": 115
                }
              ],
              "lower": [
                {
                  "player_name": "Matías Zaldivia",
                  "ranking": 117
                },
                {
                  "player_name": "Adrián de la Fuente",
                  "ranking": 118
                },
                {
                  "player_name": "Jaylan Hankins",
                  "ranking": 119
                },
                {
                  "player_name": "Marquinhos",
                  "ranking": 120
                },
                {
                  "player_name": "Jan Oblak",
                  "ranking": 121
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 26.850211855440346,
            "bench_appearance_prob": 0.6295550843381975,
            "market_value_adjustment": 1.0106,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "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 F_service (41 historical appearances) to 26.9 expected mins (appearance prob 0.63); 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.0822,
                "goals": 0.1038,
                "goal_rate": 0.1038,
                "shots_on_target": 0.2047,
                "total_shots": 0.61,
                "expected_assists": 0.0373,
                "key_pass": 0.358,
                "rating": 6.6226,
                "minutes": 23.12,
                "total_pass": 4.833,
                "accurate_pass": 3.6586,
                "duels_won": 0.8746,
                "total_long_balls": 0.1421,
                "accurate_long_balls": 0.1421,
                "total_opp_half_passes": 4.0661,
                "accurate_opp_half_passes": 2.9373,
                "crosses_total": 0.1482,
                "crosses_accurate": 0.0873,
                "touches": 9.2098,
                "possession_lost": 3.242,
                "dispossessed": 0.3422,
                "duels_lost": 2.3176,
                "aerial_lost": 0.7124,
                "total_contest": 0.5476,
                "won_contest": 0.0873,
                "ball_recovery": 1.0445,
                "challenges_lost": 0.0329,
                "fouls": 0.9536,
                "fouls_drawn": 0.3254,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1421,
                "tackles": 0.2163,
                "clearances": 0.1366,
                "blocks": 0.1086,
                "big_chances_created": 0.3621,
                "big_chances_missed": 0.0943,
                "xgot": 0.0907,
                "offsides": 0.0,
                "ball_carries": 2.9733,
                "total_progression": 15.7748,
                "progressive_carries": 0.9014,
                "shots_off_target": 0.4053
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:06:26.876327+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 612,
                    "rows": 17180
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0922,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0566,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Newcastle United",
                    "minutes": 56.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "accuratePass": 5.9764,
                  "expectedGoals": 0.1677,
                  "accurateOppositionHalfPasses": 4.8374,
                  "totalShots": 0.7588,
                  "totalOppositionHalfPasses": 6.6526
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08216851204633713,
                    "model_output": 0.0822,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2767
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0987
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.036
                      },
                      {
                        "name": "goals",
                        "importance": 0.0336
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.1929,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.098
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0042
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0029
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0027
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0059,
                      "total": 0.0822,
                      "log_link": true,
                      "margin_base": -1.645586,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.709152
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.045266
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.032401
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.030547
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.027194
                        }
                      ],
                      "others_margin": -0.06993
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.10377757996320724,
                    "model_output": 0.1038,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1491
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0805
                      },
                      {
                        "name": "goals",
                        "importance": 0.056
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0343
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.1972,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0918
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0042
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0039
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0024
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0025
                        }
                      ],
                      "others": 0.0016,
                      "total": 0.1038,
                      "log_link": true,
                      "margin_base": -1.623746,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.626214
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.040523
                        },
                        {
                          "name": "goals",
                          "margin": -0.038838
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.024573
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.024493
                        }
                      ],
                      "others_margin": 0.014751
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.20469798147678375,
                    "model_output": 0.2047,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2173
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0637
                      },
                      {
                        "name": "goals",
                        "importance": 0.0596
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0393
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.5269,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2467
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0255
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0151
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0125
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.0125,
                      "total": 0.2047,
                      "log_link": true,
                      "margin_base": -0.640773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.631636
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.095529
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.061163
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.05357
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.044746
                        }
                      ],
                      "others_margin": -0.058801
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6100211143493652,
                    "model_output": 0.61,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3005
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0627
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0526
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0309
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0307
                      }
                    ],
                    "decomposition": {
                      "base": 1.3756,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.555
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1268
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0282
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0263
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0192
                        }
                      ],
                      "others": -0.0485,
                      "total": 0.61,
                      "log_link": false,
                      "margin_base": 1.375643,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.554962
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.12675
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.02819
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.026263
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.019198
                        }
                      ],
                      "others_margin": -0.048655
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03732950612902641,
                    "model_output": 0.0373,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1287
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1119
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0634
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0522
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.051
                      }
                    ],
                    "decomposition": {
                      "base": 0.065,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0202
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0064
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0061
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0049
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0029
                        }
                      ],
                      "others": -0.0058,
                      "total": 0.0373,
                      "log_link": true,
                      "margin_base": -2.733324,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.3716
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.132718
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.126668
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.115578
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.070739
                        }
                      ],
                      "others_margin": -0.144258
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.35802915692329407,
                    "model_output": 0.358,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1579
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1341
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0953
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.069
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.6917,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2738
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0344
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0206
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0158
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0176,
                      "total": 0.358,
                      "log_link": true,
                      "margin_base": -0.368585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.504007
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.086005
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.052213
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.039974
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.033379
                        }
                      ],
                      "others_margin": -0.047404
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.622554779052734,
                    "model_output": 6.6226,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.048
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0462
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0455
                      },
                      {
                        "name": "rating",
                        "importance": 0.0455
                      }
                    ],
                    "decomposition": {
                      "base": 6.7733,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.058
                        },
                        {
                          "name": "rating",
                          "contribution": -0.029
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.012
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0116
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0115
                        }
                      ],
                      "others": -0.0286,
                      "total": 6.6226,
                      "log_link": false,
                      "margin_base": 6.773334,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.057959
                        },
                        {
                          "name": "rating",
                          "margin": -0.029019
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.011966
                        },
                        {
                          "name": "touches",
                          "margin": -0.011597
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011546
                        }
                      ],
                      "others_margin": -0.028692
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 41,
                  "role_matches": 14,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0106, quality 0.831)",
              "stats": {
                "expected_goals": 0.083,
                "goals": 0.1049,
                "goal_rate": 0.1049,
                "shots_on_target": 0.2069,
                "total_shots": 0.6165,
                "expected_assists": 0.0377,
                "key_pass": 0.3618,
                "rating": 6.6226,
                "minutes": 23.12,
                "total_pass": 4.8842,
                "accurate_pass": 3.6974,
                "duels_won": 0.8839,
                "total_long_balls": 0.1436,
                "accurate_long_balls": 0.1436,
                "total_opp_half_passes": 4.1092,
                "accurate_opp_half_passes": 2.9684,
                "crosses_total": 0.1498,
                "crosses_accurate": 0.0882,
                "touches": 9.3074,
                "possession_lost": 3.2764,
                "dispossessed": 0.3458,
                "duels_lost": 2.3422,
                "aerial_lost": 0.72,
                "total_contest": 0.5534,
                "won_contest": 0.0882,
                "ball_recovery": 1.0556,
                "challenges_lost": 0.0332,
                "fouls": 0.9637,
                "fouls_drawn": 0.3288,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1436,
                "tackles": 0.2186,
                "clearances": 0.138,
                "blocks": 0.1098,
                "big_chances_created": 0.3659,
                "big_chances_missed": 0.0953,
                "xgot": 0.0917,
                "offsides": 0.0,
                "ball_carries": 3.0048,
                "total_progression": 15.942,
                "progressive_carries": 0.911,
                "shots_off_target": 0.4096
              },
              "params": {
                "market_value_eur": 52000000,
                "quality_factor": 0.8309,
                "boost_factor": 1.0106,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.1 to 26.9 expected minutes (appearance prob 0.63)",
              "stats": {
                "expected_goals": 0.0964,
                "goals": 0.1218,
                "goal_rate": 0.1218,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0438,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.1065,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85
              },
              "params": {
                "expected_minutes": 26.85,
                "projection_minutes": 23.12,
                "minutes_scale": 1.1613,
                "appearance_probability": 0.63
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0964,
                "goals": 0.1218,
                "goal_rate": 0.1218,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0438,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.1065,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85
              },
              "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.0964,
                "goal_rate": 0.1218,
                "goals": 0,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0438,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.1065,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "expected_goals": 0.0807,
                "goal_rate": 0.1218,
                "goals": 0,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0341,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.0891,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.1735,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 0.63
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0964,
                  "after": 0.0807
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0438,
                  "after": 0.0341
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 86.0)",
              "stats": {
                "expected_goals": 0.0807,
                "goal_rate": 0.1218,
                "goals": 0,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0341,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.0891,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.1735,
                "creation_factor": 0.8,
                "fifa_overall": 86.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": 116,
                "fifa_rank": 96.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 86.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.0807,
                "goal_rate": 0.1218,
                "goals": 0,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0341,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.0891,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0757,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1735,
                "creation_factor": 0.8,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0757,
                "goal_rate": 0.1218,
                "scorer_weight": 0.0947,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0454,
                "finishing_factor": 1.1735,
                "appearance_weight": 0.63,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.0807,
                "goal_rate": 0.1218,
                "goals": 0,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0341,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.0891,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0757,
                "projected_assists": 0,
                "assist_probability": 0.0332,
                "finishing_factor": 1.1735,
                "creation_factor": 0.8,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0332,
                "assist_rate": 0.0,
                "provider_weight": 0.0273,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0175,
                "creation_factor": 0.8,
                "appearance_weight": 0.63,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Martín Zubimendi": {
          "player_id": 966837,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 36,
          "height": 181,
          "market_value": 67000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0201,
            "assist_rate": 0.0379,
            "assists": 0,
            "expected_goals": 0.0318,
            "goal_rate": 0.0348,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.721,
            "minutes": 19,
            "total_pass": 16,
            "accurate_pass": 14,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 6,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 8,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 22,
            "possession_lost": 3.5324,
            "dispossessed": 0.553,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 3,
            "total_progression": 13,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.727,
            "bench_expected_minutes": 18.9,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.671,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0311,
            "projected_assists": 0,
            "assist_probability": 0.0198,
            "finishing_factor": 1.0229,
            "creation_factor": 1.2158,
            "fifa_overall": 86.0
          },
          "latest_10_games": [
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 10,
                "rating": 6.7,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0132,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 16,
                "accurate_pass": 16,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 30,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1275,
                "expected_assists": 0.005,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 9,
                "interceptions": 1,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646.0,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 9,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 23,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0773,
                "expected_assists": 0.0187,
                "total_shots": 1,
                "total_pass": 10,
                "accurate_pass": 8,
                "interceptions": 3,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363245.0,
              "match_date": "2026-08-31",
              "home_team": "Aston Villa",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 15,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 8,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 22,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0183,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 26,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.039,
                "total_shots": 0,
                "total_pass": 67,
                "accurate_pass": 55,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023942.0,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 39,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 32,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931.0,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Fulham",
              "stats": {
                "minutes": 26,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 54,
            "combined_rank_score": 82.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 65.0,
            "sofascore_rating": 7.62,
            "sofascore_appearances": 5.0,
            "fifa_rank": 99.0,
            "fifa_overall": 86.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.721,
            "source_file": "data/player_rankings.csv",
            "player_name": "Martín Zubimendi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Rayan Cherki",
                  "ranking": 49
                },
                {
                  "player_name": "Rodri",
                  "ranking": 50
                },
                {
                  "player_name": "Matheus Serafim",
                  "ranking": 51
                },
                {
                  "player_name": "Matheus Frizzo",
                  "ranking": 52
                },
                {
                  "player_name": "Florian Wirtz",
                  "ranking": 53
                }
              ],
              "lower": [
                {
                  "player_name": "Luan Dias",
                  "ranking": 55
                },
                {
                  "player_name": "César Yanis",
                  "ranking": 56
                },
                {
                  "player_name": "Pau Cubarsí",
                  "ranking": 57
                },
                {
                  "player_name": "Declan Rice",
                  "ranking": 58
                },
                {
                  "player_name": "Frenkie de Jong",
                  "ranking": 59
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.753,
          "history_matches": 44,
          "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": 44,
            "data_confidence": 0.753,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.9,
            "bench_appearance_prob": 0.727,
            "market_value_adjustment": 1.0111,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 15.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.02
            },
            "rationale": "Bench projection scaled from XGBoost M_service (44 historical appearances) to 18.9 expected mins (appearance prob 0.73); FBref playing time empirical prior: 2.0 sub appearances, 15.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.2331,
                "expected_assists": 0.0232,
                "assists": 0.0395,
                "assist_rate": 0.0395,
                "expected_goals": 0.0343,
                "goals": 0.0363,
                "goal_rate": 0.0363,
                "shots_on_target": 0.0919,
                "total_shots": 0.3716,
                "rating": 6.721,
                "minutes": 19.91,
                "total_pass": 16.6578,
                "accurate_pass": 14.3716,
                "duels_won": 1.5676,
                "total_long_balls": 0.893,
                "accurate_long_balls": 0.5088,
                "total_own_half_passes": 6.4224,
                "accurate_own_half_passes": 5.8261,
                "total_opp_half_passes": 10.2354,
                "accurate_opp_half_passes": 8.5455,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.9486,
                "possession_lost": 3.6803,
                "dispossessed": 0.5469,
                "duels_lost": 2.0132,
                "aerial_won": 0.8277,
                "aerial_lost": 0.6226,
                "interceptions": 0.5029,
                "tackles_won": 0.4131,
                "tackles": 0.68,
                "clearances": 0.3044,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1588,
                "fouls": 0.6849,
                "fouls_drawn": 0.0599,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.5532,
                "total_progression": 13.5045,
                "progressive_carries": 0.2578,
                "shots_off_target": 0.2797
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1501,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.1276,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Sunderland",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0922,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Aston Villa",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Coventry City",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0481,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 39.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.4939,
                  "creative_index": 0.0734,
                  "expectedGoals": 0.0359,
                  "expectedAssists": 0.0189,
                  "keyPass": 0.1551
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.23310586810112,
                    "model_output": 0.2331,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4497
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0526
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.046
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0322
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0146
                        }
                      ],
                      "others": -0.062,
                      "total": 0.2331,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.703612
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.127256
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.126165
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.098766
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.048353
                        }
                      ],
                      "others_margin": -0.235813
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.023244837298989296,
                    "model_output": 0.0232,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0339
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.01
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0072
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0026
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0016
                        }
                      ],
                      "others": -0.0062,
                      "total": 0.0232,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.511692
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.219372
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.195638
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.079426
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.051831
                        }
                      ],
                      "others_margin": -0.23479
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.03951689973473549,
                    "model_output": 0.0395,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0201
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0074
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0052
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0033
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0032
                        }
                      ],
                      "others": -0.013,
                      "total": 0.0395,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.269774
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.121137
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.094572
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.060525
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.058933
                        }
                      ],
                      "others_margin": -0.283665
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03430100902915001,
                    "model_output": 0.0343,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0425
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.008
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0034
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0017
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0016
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.0343,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.621201
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.17772
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.086006
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.045475
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.04413
                        }
                      ],
                      "others_margin": -0.098344
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.036265596747398376,
                    "model_output": 0.0363,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.039
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.009
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0036
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0018
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0014
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.0363,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.531479
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.177224
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.080487
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.043567
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.033925
                        }
                      ],
                      "others_margin": -0.091819
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.09193629771471024,
                    "model_output": 0.0919,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.131
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0461
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0157
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0074
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0208,
                      "total": 0.0919,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.531
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.283294
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.117999
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.061162
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.043036
                        }
                      ],
                      "others_margin": -0.204082
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3716261684894562,
                    "model_output": 0.3716,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3541
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2018
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0355
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.021
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0169
                        }
                      ],
                      "others": 0.016,
                      "total": 0.3716,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.354064
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.201828
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.035515
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.021024
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.016856
                        }
                      ],
                      "others_margin": 0.015978
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.720966815948486,
                    "model_output": 6.721,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.094
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0212
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0201
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0115
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.0032,
                      "total": 6.721,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.093965
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.021201
                        },
                        {
                          "name": "rating",
                          "margin": -0.020114
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.011482
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.009387
                        }
                      ],
                      "others_margin": -0.003254
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 44,
                  "role_matches": 10,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0111, quality 0.866)",
              "stats": {
                "key_pass": 0.2357,
                "expected_assists": 0.0235,
                "assists": 0.04,
                "assist_rate": 0.04,
                "expected_goals": 0.0347,
                "goals": 0.0367,
                "goal_rate": 0.0367,
                "shots_on_target": 0.093,
                "total_shots": 0.3758,
                "rating": 6.721,
                "minutes": 19.91,
                "total_pass": 16.8427,
                "accurate_pass": 14.5311,
                "duels_won": 1.585,
                "total_long_balls": 0.9029,
                "accurate_long_balls": 0.5144,
                "total_own_half_passes": 6.4937,
                "accurate_own_half_passes": 5.8908,
                "total_opp_half_passes": 10.349,
                "accurate_opp_half_passes": 8.6404,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 23.2033,
                "possession_lost": 3.7212,
                "dispossessed": 0.553,
                "duels_lost": 2.0355,
                "aerial_won": 0.8369,
                "aerial_lost": 0.6295,
                "interceptions": 0.5085,
                "tackles_won": 0.4177,
                "tackles": 0.6875,
                "clearances": 0.3078,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6925,
                "fouls_drawn": 0.0606,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.5926,
                "total_progression": 13.6544,
                "progressive_carries": 0.2607,
                "shots_off_target": 0.2828
              },
              "params": {
                "market_value_eur": 67000000,
                "quality_factor": 0.8661,
                "boost_factor": 1.0111,
                "reference_quality": 0.505,
                "history_matches": 44,
                "history_shrink": 0.102,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0013)",
              "stats": {
                "key_pass": 0.2357,
                "expected_assists": 0.0235,
                "assists": 0.0399,
                "assist_rate": 0.0399,
                "expected_goals": 0.0347,
                "goals": 0.0367,
                "goal_rate": 0.0367,
                "shots_on_target": 0.0929,
                "total_shots": 0.3753,
                "rating": 6.721,
                "minutes": 19.91,
                "total_pass": 16.8427,
                "accurate_pass": 14.5311,
                "duels_won": 1.585,
                "total_long_balls": 0.9029,
                "accurate_long_balls": 0.5144,
                "total_own_half_passes": 6.4937,
                "accurate_own_half_passes": 5.8908,
                "total_opp_half_passes": 10.349,
                "accurate_opp_half_passes": 8.6404,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 23.2033,
                "possession_lost": 3.7212,
                "dispossessed": 0.553,
                "duels_lost": 2.0355,
                "aerial_won": 0.8369,
                "aerial_lost": 0.6295,
                "interceptions": 0.5078,
                "tackles_won": 0.4181,
                "tackles": 0.6875,
                "clearances": 0.3078,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6916,
                "fouls_drawn": 0.0605,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.5926,
                "total_progression": 13.6544,
                "progressive_carries": 0.2607,
                "shots_off_target": 0.2828
              },
              "params": {
                "blend_weight": 0.0013,
                "history_matches": 44,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2212,
                "prior_reliability": 0.02,
                "competition": "Premier League",
                "squad": "Arsenal"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.9 to 18.9 expected minutes (appearance prob 0.73)",
              "stats": {
                "key_pass": 0.2237,
                "expected_assists": 0.0223,
                "assists": 0.0379,
                "assist_rate": 0.0379,
                "expected_goals": 0.0329,
                "goals": 0.0348,
                "goal_rate": 0.0348,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9
              },
              "params": {
                "expected_minutes": 18.9,
                "projection_minutes": 19.91,
                "minutes_scale": 0.9493,
                "appearance_probability": 0.727
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.2237,
                "expected_assists": 0.0223,
                "assists": 0.0379,
                "assist_rate": 0.0379,
                "expected_goals": 0.0329,
                "goals": 0.0348,
                "goal_rate": 0.0348,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9
              },
              "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.2237,
                "expected_assists": 0.0223,
                "assist_rate": 0.0379,
                "assists": 0,
                "expected_goals": 0.0329,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "key_pass": 0.2237,
                "expected_assists": 0.0201,
                "assist_rate": 0.0379,
                "assists": 0,
                "expected_goals": 0.0318,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.0229,
                "creation_factor": 1.2158
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 0.727
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 86.0)",
              "stats": {
                "key_pass": 0.2237,
                "expected_assists": 0.0201,
                "assist_rate": 0.0379,
                "assists": 0,
                "expected_goals": 0.0318,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.0229,
                "creation_factor": 1.2158,
                "fifa_overall": 86.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 54,
                "fifa_rank": 99.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 86.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.2237,
                "expected_assists": 0.0201,
                "assist_rate": 0.0379,
                "assists": 0,
                "expected_goals": 0.0318,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0311,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0229,
                "creation_factor": 1.2158,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0311,
                "goal_rate": 0.0348,
                "scorer_weight": 0.0325,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0156,
                "finishing_factor": 1.0229,
                "appearance_weight": 0.727,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.2237,
                "expected_assists": 0.0201,
                "assist_rate": 0.0379,
                "assists": 0,
                "expected_goals": 0.0318,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.0882,
                "total_shots": 0.3567,
                "rating": 6.721,
                "minutes": 18.9,
                "total_pass": 15.9883,
                "accurate_pass": 13.794,
                "duels_won": 1.5046,
                "total_long_balls": 0.8571,
                "accurate_long_balls": 0.4883,
                "total_own_half_passes": 6.1643,
                "accurate_own_half_passes": 5.592,
                "total_opp_half_passes": 9.824,
                "accurate_opp_half_passes": 8.2021,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.0262,
                "possession_lost": 3.5324,
                "dispossessed": 0.553,
                "duels_lost": 1.9322,
                "aerial_won": 0.7944,
                "aerial_lost": 0.6295,
                "interceptions": 0.482,
                "tackles_won": 0.3969,
                "tackles": 0.6526,
                "clearances": 0.2922,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1606,
                "fouls": 0.6565,
                "fouls_drawn": 0.0574,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4104,
                "total_progression": 12.9617,
                "progressive_carries": 0.2475,
                "shots_off_target": 0.2685,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 18.9,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0311,
                "projected_assists": 0,
                "assist_probability": 0.0198,
                "finishing_factor": 1.0229,
                "creation_factor": 1.2158,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0198,
                "assist_rate": 0.0379,
                "provider_weight": 0.0244,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0157,
                "creation_factor": 1.2158,
                "appearance_weight": 0.727,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Viktor Gyökeres": {
          "player_id": 804508,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 14,
          "height": 187,
          "market_value": 52000000,
          "stats": {
            "expected_goals": 0.0807,
            "goal_rate": 0.1218,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0341,
            "key_pass": 0,
            "rating": 6.6226,
            "minutes": 27,
            "total_pass": 6,
            "accurate_pass": 4,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 11,
            "possession_lost": 3.805,
            "dispossessed": 0.3458,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0891,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 19,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.63,
            "bench_expected_minutes": 26.85,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.671,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0757,
            "projected_assists": 0,
            "assist_probability": 0.0332,
            "finishing_factor": 1.1735,
            "creation_factor": 0.8,
            "fifa_overall": 86.0
          },
          "latest_10_games": [
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 68,
                "rating": 6.4,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.065,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 13,
                "accurate_pass": 10,
                "key_pass": 3,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 3,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363889.0,
              "match_date": "2026-10-18",
              "home_team": "Nottingham Forest",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 24,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0778,
                "expected_assists": 0.0339,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 5,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363871.0,
              "match_date": "2026-10-10",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 27,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1574,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 7,
                "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.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 17,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2344,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "key_pass": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363257.0,
              "match_date": "2026-09-06",
              "home_team": "Arsenal",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 12,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 16,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1644,
                "expected_assists": 0.103,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 3,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023950.0,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Burnley",
              "stats": {
                "minutes": 17,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0071,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023942.0,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1151,
                "expected_assists": 0.0283,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 15,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931.0,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Fulham",
              "stats": {
                "minutes": 64,
                "rating": 8.2,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 1.7004,
                "expected_assists": 0.0193,
                "total_shots": 4,
                "shots_on_target": 4,
                "total_pass": 9,
                "accurate_pass": 8,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025045.0,
              "match_date": "2026-04-25",
              "home_team": "Arsenal",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 56,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0298,
                "expected_assists": 0.0072,
                "total_shots": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 116,
            "combined_rank_score": 110.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 125.0,
            "sofascore_rating": 7.3833,
            "sofascore_appearances": 6.0,
            "fifa_rank": 96.0,
            "fifa_overall": 86.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6226,
            "source_file": "data/player_rankings.csv",
            "player_name": "Viktor Gyökeres",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jérémy Doku",
                  "ranking": 111
                },
                {
                  "player_name": "Bruno Lamas",
                  "ranking": 112
                },
                {
                  "player_name": "Jun-ho Son",
                  "ranking": 113
                },
                {
                  "player_name": "Luka Modrić",
                  "ranking": 114
                },
                {
                  "player_name": "Jean Meneses",
                  "ranking": 115
                }
              ],
              "lower": [
                {
                  "player_name": "Matías Zaldivia",
                  "ranking": 117
                },
                {
                  "player_name": "Adrián de la Fuente",
                  "ranking": 118
                },
                {
                  "player_name": "Jaylan Hankins",
                  "ranking": 119
                },
                {
                  "player_name": "Marquinhos",
                  "ranking": 120
                },
                {
                  "player_name": "Jan Oblak",
                  "ranking": 121
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 26.850211855440346,
            "bench_appearance_prob": 0.6295550843381975,
            "market_value_adjustment": 1.0106,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "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 F_service (41 historical appearances) to 26.9 expected mins (appearance prob 0.63); 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.0822,
                "goals": 0.1038,
                "goal_rate": 0.1038,
                "shots_on_target": 0.2047,
                "total_shots": 0.61,
                "expected_assists": 0.0373,
                "key_pass": 0.358,
                "rating": 6.6226,
                "minutes": 23.12,
                "total_pass": 4.833,
                "accurate_pass": 3.6586,
                "duels_won": 0.8746,
                "total_long_balls": 0.1421,
                "accurate_long_balls": 0.1421,
                "total_opp_half_passes": 4.0661,
                "accurate_opp_half_passes": 2.9373,
                "crosses_total": 0.1482,
                "crosses_accurate": 0.0873,
                "touches": 9.2098,
                "possession_lost": 3.242,
                "dispossessed": 0.3422,
                "duels_lost": 2.3176,
                "aerial_lost": 0.7124,
                "total_contest": 0.5476,
                "won_contest": 0.0873,
                "ball_recovery": 1.0445,
                "challenges_lost": 0.0329,
                "fouls": 0.9536,
                "fouls_drawn": 0.3254,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1421,
                "tackles": 0.2163,
                "clearances": 0.1366,
                "blocks": 0.1086,
                "big_chances_created": 0.3621,
                "big_chances_missed": 0.0943,
                "xgot": 0.0907,
                "offsides": 0.0,
                "ball_carries": 2.9733,
                "total_progression": 15.7748,
                "progressive_carries": 0.9014,
                "shots_off_target": 0.4053
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:06:26.876327+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 612,
                    "rows": 17180
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-18",
                    "opponent": "Nottingham Forest",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Leeds United",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0922,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Chelsea",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Burnley",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0566,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Newcastle United",
                    "minutes": 56.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "accuratePass": 5.9764,
                  "expectedGoals": 0.1677,
                  "accurateOppositionHalfPasses": 4.8374,
                  "totalShots": 0.7588,
                  "totalOppositionHalfPasses": 6.6526
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08216851204633713,
                    "model_output": 0.0822,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2767
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0987
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.036
                      },
                      {
                        "name": "goals",
                        "importance": 0.0336
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.1929,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.098
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0042
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0029
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0027
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0059,
                      "total": 0.0822,
                      "log_link": true,
                      "margin_base": -1.645586,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.709152
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.045266
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.032401
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.030547
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.027194
                        }
                      ],
                      "others_margin": -0.06993
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.10377757996320724,
                    "model_output": 0.1038,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1491
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0805
                      },
                      {
                        "name": "goals",
                        "importance": 0.056
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0343
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.1972,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0918
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0042
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0039
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0024
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0025
                        }
                      ],
                      "others": 0.0016,
                      "total": 0.1038,
                      "log_link": true,
                      "margin_base": -1.623746,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.626214
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.040523
                        },
                        {
                          "name": "goals",
                          "margin": -0.038838
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.024573
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.024493
                        }
                      ],
                      "others_margin": 0.014751
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.20469798147678375,
                    "model_output": 0.2047,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2173
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0637
                      },
                      {
                        "name": "goals",
                        "importance": 0.0596
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0393
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.5269,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2467
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0255
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0151
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0125
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.0125,
                      "total": 0.2047,
                      "log_link": true,
                      "margin_base": -0.640773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.631636
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.095529
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.061163
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.05357
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.044746
                        }
                      ],
                      "others_margin": -0.058801
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6100211143493652,
                    "model_output": 0.61,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3005
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0627
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0526
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0309
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0307
                      }
                    ],
                    "decomposition": {
                      "base": 1.3756,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.555
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1268
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0282
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0263
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0192
                        }
                      ],
                      "others": -0.0485,
                      "total": 0.61,
                      "log_link": false,
                      "margin_base": 1.375643,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.554962
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.12675
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.02819
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.026263
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.019198
                        }
                      ],
                      "others_margin": -0.048655
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03732950612902641,
                    "model_output": 0.0373,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1287
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1119
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0634
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0522
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.051
                      }
                    ],
                    "decomposition": {
                      "base": 0.065,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0202
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0064
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0061
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0049
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0029
                        }
                      ],
                      "others": -0.0058,
                      "total": 0.0373,
                      "log_link": true,
                      "margin_base": -2.733324,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.3716
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.132718
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.126668
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.115578
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.070739
                        }
                      ],
                      "others_margin": -0.144258
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.35802915692329407,
                    "model_output": 0.358,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1579
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1341
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0953
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.069
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.6917,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2738
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0344
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0206
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0158
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0176,
                      "total": 0.358,
                      "log_link": true,
                      "margin_base": -0.368585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.504007
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.086005
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.052213
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.039974
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.033379
                        }
                      ],
                      "others_margin": -0.047404
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.622554779052734,
                    "model_output": 6.6226,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.048
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0462
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0455
                      },
                      {
                        "name": "rating",
                        "importance": 0.0455
                      }
                    ],
                    "decomposition": {
                      "base": 6.7733,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.058
                        },
                        {
                          "name": "rating",
                          "contribution": -0.029
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.012
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0116
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0115
                        }
                      ],
                      "others": -0.0286,
                      "total": 6.6226,
                      "log_link": false,
                      "margin_base": 6.773334,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.057959
                        },
                        {
                          "name": "rating",
                          "margin": -0.029019
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.011966
                        },
                        {
                          "name": "touches",
                          "margin": -0.011597
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011546
                        }
                      ],
                      "others_margin": -0.028692
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 41,
                  "role_matches": 14,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0106, quality 0.831)",
              "stats": {
                "expected_goals": 0.083,
                "goals": 0.1049,
                "goal_rate": 0.1049,
                "shots_on_target": 0.2069,
                "total_shots": 0.6165,
                "expected_assists": 0.0377,
                "key_pass": 0.3618,
                "rating": 6.6226,
                "minutes": 23.12,
                "total_pass": 4.8842,
                "accurate_pass": 3.6974,
                "duels_won": 0.8839,
                "total_long_balls": 0.1436,
                "accurate_long_balls": 0.1436,
                "total_opp_half_passes": 4.1092,
                "accurate_opp_half_passes": 2.9684,
                "crosses_total": 0.1498,
                "crosses_accurate": 0.0882,
                "touches": 9.3074,
                "possession_lost": 3.2764,
                "dispossessed": 0.3458,
                "duels_lost": 2.3422,
                "aerial_lost": 0.72,
                "total_contest": 0.5534,
                "won_contest": 0.0882,
                "ball_recovery": 1.0556,
                "challenges_lost": 0.0332,
                "fouls": 0.9637,
                "fouls_drawn": 0.3288,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1436,
                "tackles": 0.2186,
                "clearances": 0.138,
                "blocks": 0.1098,
                "big_chances_created": 0.3659,
                "big_chances_missed": 0.0953,
                "xgot": 0.0917,
                "offsides": 0.0,
                "ball_carries": 3.0048,
                "total_progression": 15.942,
                "progressive_carries": 0.911,
                "shots_off_target": 0.4096
              },
              "params": {
                "market_value_eur": 52000000,
                "quality_factor": 0.8309,
                "boost_factor": 1.0106,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.1 to 26.9 expected minutes (appearance prob 0.63)",
              "stats": {
                "expected_goals": 0.0964,
                "goals": 0.1218,
                "goal_rate": 0.1218,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0438,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.1065,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85
              },
              "params": {
                "expected_minutes": 26.85,
                "projection_minutes": 23.12,
                "minutes_scale": 1.1613,
                "appearance_probability": 0.63
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0964,
                "goals": 0.1218,
                "goal_rate": 0.1218,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0438,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.1065,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85
              },
              "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.0964,
                "goal_rate": 0.1218,
                "goals": 0,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0438,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.1065,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "expected_goals": 0.0807,
                "goal_rate": 0.1218,
                "goals": 0,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0341,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.0891,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.1735,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 0.63
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0964,
                  "after": 0.0807
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0438,
                  "after": 0.0341
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 86.0)",
              "stats": {
                "expected_goals": 0.0807,
                "goal_rate": 0.1218,
                "goals": 0,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0341,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.0891,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.1735,
                "creation_factor": 0.8,
                "fifa_overall": 86.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": 116,
                "fifa_rank": 96.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 86.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.0807,
                "goal_rate": 0.1218,
                "goals": 0,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0341,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.0891,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0757,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1735,
                "creation_factor": 0.8,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0757,
                "goal_rate": 0.1218,
                "scorer_weight": 0.0947,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0454,
                "finishing_factor": 1.1735,
                "appearance_weight": 0.63,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.0807,
                "goal_rate": 0.1218,
                "goals": 0,
                "shots_on_target": 0.2403,
                "total_shots": 0.716,
                "expected_assists": 0.0341,
                "key_pass": 0.4202,
                "rating": 6.6226,
                "minutes": 26.85,
                "total_pass": 5.6722,
                "accurate_pass": 4.2939,
                "duels_won": 1.0265,
                "total_long_balls": 0.1668,
                "accurate_long_balls": 0.1668,
                "total_opp_half_passes": 4.7722,
                "accurate_opp_half_passes": 3.4473,
                "crosses_total": 0.174,
                "crosses_accurate": 0.1024,
                "touches": 10.8091,
                "possession_lost": 3.805,
                "dispossessed": 0.3458,
                "duels_lost": 2.7201,
                "aerial_lost": 0.72,
                "total_contest": 0.6427,
                "won_contest": 0.1024,
                "ball_recovery": 1.2259,
                "challenges_lost": 0.0332,
                "fouls": 1.1192,
                "fouls_drawn": 0.3818,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1668,
                "tackles": 0.2539,
                "clearances": 0.1603,
                "blocks": 0.1275,
                "big_chances_created": 0.4249,
                "big_chances_missed": 0.1107,
                "xgot": 0.0891,
                "offsides": 0.0,
                "ball_carries": 3.4896,
                "total_progression": 18.5141,
                "progressive_carries": 1.058,
                "shots_off_target": 0.4757,
                "bench_appearance_probability": 0.63,
                "bench_expected_minutes": 26.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0757,
                "projected_assists": 0,
                "assist_probability": 0.0332,
                "finishing_factor": 1.1735,
                "creation_factor": 0.8,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0332,
                "assist_rate": 0.0,
                "provider_weight": 0.0273,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0175,
                "creation_factor": 0.8,
                "appearance_weight": 0.63,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Max Dowman": {
          "player_id": 1917626,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 56,
          "height": 183,
          "market_value": 52000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0406,
            "assist_rate": 0.0738,
            "assists": 0,
            "expected_goals": 0.0454,
            "goal_rate": 0.0798,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6764,
            "minutes": 24,
            "total_pass": 8,
            "accurate_pass": 7,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 5.2782,
            "dispossessed": 0.5023,
            "duels_lost": 4,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 3,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1291,
            "ball_carries": 8,
            "total_progression": 39,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.57,
            "bench_expected_minutes": 23.53,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.671,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0436,
            "projected_assists": 0,
            "assist_probability": 0.0392,
            "finishing_factor": 1.1811,
            "creation_factor": 1.1506,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363891.0,
              "match_date": "2026-10-24",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 10,
                "rating": 6.4,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 1,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363650.0,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 9,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0838,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "key_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963.0,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Arsenal",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 62,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1648,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 21,
                "key_pass": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931.0,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Fulham",
              "stats": {
                "minutes": 12,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0761,
                "expected_assists": 0.0038,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 3,
                "accurate_pass": 3,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025021.0,
              "match_date": "2026-04-11",
              "home_team": "Arsenal",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 36,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1046,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023987.0,
              "match_date": "2026-03-14",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Everton",
              "stats": {
                "minutes": 16,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.9692,
                "expected_assists": 0.0215,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025103.0,
              "match_date": "2025-08-31",
              "home_team": "Liverpool FC",
              "away_team": "Arsenal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 10,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.058,
                "expected_assists": 0.0014,
                "total_shots": 1,
                "total_pass": 2,
                "accurate_pass": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025065.0,
              "match_date": "2025-08-23",
              "home_team": "Arsenal",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Arsenal",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 26,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0792,
                "expected_assists": 0.0238,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 2,
                "accurate_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1510,
            "combined_rank_score": 783.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 622.0,
            "sofascore_rating": 6.7667,
            "sofascore_appearances": 6.0,
            "fifa_rank": 945.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6764,
            "source_file": "data/player_rankings.csv",
            "player_name": "Max Dowman",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Manuel Rivera",
                  "ranking": 1505
                },
                {
                  "player_name": "Dong-hyun Kang",
                  "ranking": 1506
                },
                {
                  "player_name": "Hwang Seok-ki",
                  "ranking": 1507
                },
                {
                  "player_name": "Ollabergan Karimov",
                  "ranking": 1508
                },
                {
                  "player_name": "Álvaro Fidalgo",
                  "ranking": 1509
                }
              ],
              "lower": [
                {
                  "player_name": "Lucas Evangelista",
                  "ranking": 1511
                },
                {
                  "player_name": "Fábio",
                  "ranking": 1512
                },
                {
                  "player_name": "Mukhammadaziz Ibrakhimov",
                  "ranking": 1513
                },
                {
                  "player_name": "Igor Golban",
                  "ranking": 1514
                },
                {
                  "player_name": "German Barkovskiy",
                  "ranking": 1515
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 8,
          "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": 8,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 23.530211855440346,
            "bench_appearance_prob": 0.5695550843381976,
            "market_value_adjustment": 1.0376,
            "fbref_prior_metrics": {
              "squad": "Arsenal",
              "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 M_service (8 historical appearances) to 23.5 expected mins (appearance prob 0.57); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4582,
                "expected_assists": 0.0388,
                "assists": 0.0496,
                "assist_rate": 0.0496,
                "expected_goals": 0.0403,
                "goals": 0.0537,
                "goal_rate": 0.0537,
                "shots_on_target": 0.2263,
                "total_shots": 0.5463,
                "rating": 6.6764,
                "minutes": 16.42,
                "total_pass": 5.3115,
                "accurate_pass": 4.9251,
                "duels_won": 1.7122,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 0.6848,
                "accurate_own_half_passes": 0.6848,
                "total_opp_half_passes": 4.6267,
                "accurate_opp_half_passes": 4.2403,
                "crosses_total": 0.9808,
                "crosses_accurate": 0.3232,
                "touches": 12.4504,
                "possession_lost": 3.5498,
                "dispossessed": 0.4841,
                "duels_lost": 2.7004,
                "aerial_won": 0.0,
                "aerial_lost": 0.2951,
                "interceptions": 0.1595,
                "tackles_won": 0.1665,
                "tackles": 0.1665,
                "clearances": 0.0,
                "total_contest": 2.2051,
                "won_contest": 0.8535,
                "challenges_lost": 0.2132,
                "fouls": 0.3564,
                "fouls_drawn": 0.6921,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1147,
                "ball_carries": 5.2865,
                "total_progression": 26.4655,
                "progressive_carries": 0.9578,
                "shots_off_target": 0.32
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Everton",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.2062,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.1753,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Crystal Palace",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.149,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Fulham",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1266,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Bournemouth",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.1076,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Everton",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0915,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2025-08-31",
                    "opponent": "Liverpool FC",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0778,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2025-08-23",
                    "opponent": "Leeds United",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0661,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 8.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.5195,
                  "creative_index": 0.2794,
                  "expectedGoals": 0.108,
                  "expectedAssists": 0.0558,
                  "keyPass": 0.6148
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.4581705927848816,
                    "model_output": 0.4582,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4087
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0352
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0295
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0187
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0176
                        }
                      ],
                      "others": 0.0051,
                      "total": 0.4582,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.614482
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.075848
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.06839
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.043769
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.039611
                        }
                      ],
                      "others_margin": 0.011123
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03875534608960152,
                    "model_output": 0.0388,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0404
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.004
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0033
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0021
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0009,
                      "total": 0.0388,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.647571
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.095623
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.079155
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.049592
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.045255
                        }
                      ],
                      "others_margin": -0.022679
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04964131489396095,
                    "model_output": 0.0496,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0218
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0063
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0048
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0044
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0034,
                      "total": 0.0496,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.295512
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.104429
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.087975
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.081347
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.064858
                        }
                      ],
                      "others_margin": -0.068033
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04031059890985489,
                    "model_output": 0.0403,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0451
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0092
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0057
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0038
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0041,
                      "total": 0.0403,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.674953
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.220435
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.141492
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.085226
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.057959
                        }
                      ],
                      "others_margin": -0.096548
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05368460714817047,
                    "model_output": 0.0537,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.041
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0086
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0047
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.004
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0036
                        }
                      ],
                      "others": 0.0036,
                      "total": 0.0537,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.568643
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.175871
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.100223
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.077923
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.068489
                        }
                      ],
                      "others_margin": 0.068613
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.22626997530460358,
                    "model_output": 0.2263,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1298
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0434
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0388
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0121
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0081
                        }
                      ],
                      "others": 0.0134,
                      "total": 0.2263,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.524619
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.207746
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.183408
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.060973
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.038877
                        }
                      ],
                      "others_margin": 0.060492
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5462558269500732,
                    "model_output": 0.5463,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4322
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1841
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1189
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0409
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0323
                        }
                      ],
                      "others": 0.0502,
                      "total": 0.5463,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.432183
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.184055
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.118852
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.040941
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.032251
                        }
                      ],
                      "others_margin": 0.050017
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.676353931427002,
                    "model_output": 6.6764,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.081
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0449
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0393
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0199
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0076
                        }
                      ],
                      "others": -0.0281,
                      "total": 6.6764,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.081001
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.044862
                        },
                        {
                          "name": "rating",
                          "margin": -0.039297
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.019899
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.007596
                        }
                      ],
                      "others_margin": -0.028195
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 8,
                  "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.0376, quality 0.831)",
              "stats": {
                "key_pass": 0.4754,
                "expected_assists": 0.0402,
                "assists": 0.0515,
                "assist_rate": 0.0515,
                "expected_goals": 0.0418,
                "goals": 0.0557,
                "goal_rate": 0.0557,
                "shots_on_target": 0.2348,
                "total_shots": 0.5668,
                "rating": 6.6764,
                "minutes": 16.42,
                "total_pass": 5.5112,
                "accurate_pass": 5.1103,
                "duels_won": 1.7766,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 0.7105,
                "accurate_own_half_passes": 0.7105,
                "total_opp_half_passes": 4.8007,
                "accurate_opp_half_passes": 4.3997,
                "crosses_total": 1.0177,
                "crosses_accurate": 0.3354,
                "touches": 12.9185,
                "possession_lost": 3.6833,
                "dispossessed": 0.5023,
                "duels_lost": 2.8019,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.1655,
                "tackles_won": 0.1728,
                "tackles": 0.1728,
                "clearances": 0.0,
                "total_contest": 2.288,
                "won_contest": 0.8856,
                "challenges_lost": 0.2212,
                "fouls": 0.3698,
                "fouls_drawn": 0.7181,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.119,
                "ball_carries": 5.4853,
                "total_progression": 27.4606,
                "progressive_carries": 0.9938,
                "shots_off_target": 0.332
              },
              "params": {
                "market_value_eur": 52000000,
                "quality_factor": 0.8309,
                "boost_factor": 1.0376,
                "reference_quality": 0.505,
                "history_matches": 8,
                "history_shrink": 0.3846,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 16.4 to 23.5 expected minutes (appearance prob 0.57)",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0576,
                "assists": 0.0738,
                "assist_rate": 0.0738,
                "expected_goals": 0.0599,
                "goals": 0.0798,
                "goal_rate": 0.0798,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1705,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53
              },
              "params": {
                "expected_minutes": 23.53,
                "projection_minutes": 16.42,
                "minutes_scale": 1.433,
                "appearance_probability": 0.57
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0576,
                "assists": 0.0738,
                "assist_rate": 0.0738,
                "expected_goals": 0.0599,
                "goals": 0.0798,
                "goal_rate": 0.0798,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1705,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0576,
                "assist_rate": 0.0738,
                "assists": 0,
                "expected_goals": 0.0599,
                "goal_rate": 0.0798,
                "goals": 0,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1705,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.98 (squad xG sum 1.4874, xG scale 1.3285, xA scale 1.2370, team xA 1.58 = 0.80 x lambda)",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0406,
                "assist_rate": 0.0738,
                "assists": 0,
                "expected_goals": 0.0454,
                "goal_rate": 0.0798,
                "goals": 0,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1291,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.1811,
                "creation_factor": 1.1506
              },
              "params": {
                "team_lambda": 1.976,
                "squad_xg_sum": 1.4874,
                "squad_xa_sum": 1.2779,
                "team_expected_assists": 1.5808,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.3285,
                "xa_scale": 1.237,
                "opponent_lambda": 0.82,
                "scoreline_reset": true,
                "appearance_weight": 0.57
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0599,
                  "after": 0.0454
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0576,
                  "after": 0.0406
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 79.0)",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0406,
                "assist_rate": 0.0738,
                "assists": 0,
                "expected_goals": 0.0454,
                "goal_rate": 0.0798,
                "goals": 0,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1291,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "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.1811,
                "creation_factor": 1.1506,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 1510,
                "fifa_rank": 945.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.6813,
                "expected_assists": 0.0406,
                "assist_rate": 0.0738,
                "assists": 0,
                "expected_goals": 0.0454,
                "goal_rate": 0.0798,
                "goals": 0,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1291,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0436,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1811,
                "creation_factor": 1.1506,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0436,
                "goal_rate": 0.0798,
                "scorer_weight": 0.0536,
                "squad_weight_total": 2.0855,
                "weight_share": 0.0257,
                "finishing_factor": 1.1811,
                "appearance_weight": 0.57,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Bukayo Saka",
                    "weight": 0.5448,
                    "already": 0,
                    "effective_weight": 0.5448,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.4349
                  }
                ]
              }
            },
            {
              "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.6813,
                "expected_assists": 0.0406,
                "assist_rate": 0.0738,
                "assists": 0,
                "expected_goals": 0.0454,
                "goal_rate": 0.0798,
                "goals": 0,
                "shots_on_target": 0.3365,
                "total_shots": 0.8123,
                "rating": 6.6764,
                "minutes": 23.53,
                "total_pass": 7.8977,
                "accurate_pass": 7.3232,
                "duels_won": 2.5459,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.0182,
                "accurate_own_half_passes": 1.0182,
                "total_opp_half_passes": 6.8795,
                "accurate_opp_half_passes": 6.3049,
                "crosses_total": 1.4584,
                "crosses_accurate": 0.4806,
                "touches": 18.5125,
                "possession_lost": 5.2782,
                "dispossessed": 0.5023,
                "duels_lost": 4.0152,
                "aerial_won": 0.0,
                "aerial_lost": 0.3062,
                "interceptions": 0.2372,
                "tackles_won": 0.2476,
                "tackles": 0.2476,
                "clearances": 0.0,
                "total_contest": 3.2788,
                "won_contest": 1.2691,
                "challenges_lost": 0.2212,
                "fouls": 0.5299,
                "fouls_drawn": 1.0291,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1291,
                "ball_carries": 7.8606,
                "total_progression": 39.3516,
                "progressive_carries": 1.4241,
                "shots_off_target": 0.4758,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 23.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.671,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0436,
                "projected_assists": 0,
                "assist_probability": 0.0392,
                "finishing_factor": 1.1811,
                "creation_factor": 1.1506,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0392,
                "assist_rate": 0.0738,
                "provider_weight": 0.0467,
                "squad_weight_total": 1.5615,
                "weight_share": 0.0299,
                "creation_factor": 1.1506,
                "appearance_weight": 0.57,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Declan Rice",
                    "weight": 0.306,
                    "already": 0,
                    "effective_weight": 0.306,
                    "runner_up": "Martin Ødegaard",
                    "runner_up_effective_weight": 0.2816,
                    "blocked_own_goal": [
                      "Bukayo Saka"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.98,
        "expected_assists": 1.58,
        "total_shots": 15,
        "shots_on_target": 5,
        "total_passes": 537,
        "interceptions": 8,
        "tackles": 15,
        "avg_rating": 7.05,
        "possession_estimated_pct": 53.3,
        "pressing_actions_per_90": 8.3
      }
    },
    "Hull": {
      "formation": "5-4-1",
      "players": {
        "Konstantinos Tzolakis": {
          "player_id": 953414,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 19,
          "height": 193,
          "market_value": 21000000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.0568,
            "rating": 6.8645,
            "minutes": 90,
            "total_pass": 40,
            "accurate_pass": 18,
            "total_long_balls": 30,
            "accurate_long_balls": 9,
            "touches": 55,
            "clearances": 1,
            "ball_recovery": 13,
            "high_claims": 1,
            "punches": 0.9587,
            "aerial_won": 1,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 22.6144,
            "duels_won": 2,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 12,
            "gk_engine_opponent_lambda": 2.1716,
            "shots_faced": 18.8,
            "expected_saves": 4.6,
            "high_pressure_saves": 1.58,
            "opponent_faced": "Bukayo Saka, Martin Ødegaard",
            "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": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 48,
                "accurate_pass": 27,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 12,
                "saves": 1,
                "goals_prevented": -1.1186
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 41,
                "accurate_pass": 18,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 3,
                "aerial_won": 0,
                "duels_won": 1,
                "ball_recovery": 12,
                "saves": 5,
                "goals_prevented": 0.6787
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 13,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 12,
                "saves": 5,
                "goals_prevented": -0.4572
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 20,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 11,
                "saves": 4,
                "goals_prevented": -0.3052
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 17,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 11,
                "saves": 3,
                "goals_prevented": -0.2533
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 12,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 15,
                "saves": 5,
                "goals_prevented": -0.2624
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 18,
                "duels_won": 1,
                "ball_recovery": 10,
                "saves": 1,
                "goals_prevented": 0.0756
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 8.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 11,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 11,
                "saves": 3,
                "goals_prevented": 1.3259
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 17,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 22,
                "saves": 5,
                "goals_prevented": 0.5968
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1105,
            "combined_rank_score": 495.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 19.0,
            "sofascore_rating": 8.15,
            "sofascore_appearances": 2.0,
            "fifa_rank": 972.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8645,
            "source_file": "data/player_rankings.csv",
            "player_name": "Konstantinos Tzolakis",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mukhammadkodir Khamraliev",
                  "ranking": 1100
                },
                {
                  "player_name": "Pascal Groß",
                  "ranking": 1101
                },
                {
                  "player_name": "Alberto Moleiro",
                  "ranking": 1102
                },
                {
                  "player_name": "Angelo Stiller",
                  "ranking": 1103
                },
                {
                  "player_name": "Mauro Júnior",
                  "ranking": 1104
                }
              ],
              "lower": [
                {
                  "player_name": "Pau Torres",
                  "ranking": 1106
                },
                {
                  "player_name": "Ju-yeong Jo",
                  "ranking": 1107
                },
                {
                  "player_name": "Lee Dong-hyeop",
                  "ranking": 1108
                },
                {
                  "player_name": "Alphonso Davies",
                  "ranking": 1109
                },
                {
                  "player_name": "Pierre-Emerick Aubameyang",
                  "ranking": 1110
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 9,
          "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": 9,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0145,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (G_service) evaluated 9 historical appearances across 3 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.9286,
                "goals_prevented": -0.056,
                "rating": 6.8645,
                "minutes": 90.0,
                "total_pass": 39.5655,
                "accurate_pass": 18.1786,
                "total_long_balls": 29.9448,
                "accurate_long_balls": 9.2617,
                "touches": 54.1704,
                "clearances": 0.932,
                "ball_recovery": 12.3602,
                "high_claims": 1.3979,
                "punches": 0.945,
                "aerial_won": 0.6726,
                "sweeper_actions": 1.2421,
                "sweeper_accurate": 1.0364,
                "saves_inside_box": 2.3132,
                "possession_lost": 22.2912,
                "duels_won": 1.6969,
                "duels_lost": 0.0,
                "total_contest": 0.2609,
                "won_contest": 0.2609,
                "fouls": 0.0,
                "fouls_drawn": 0.6113,
                "total_own_half_passes": 14.5588,
                "accurate_own_half_passes": 12.0253
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-11-03T11:03:54.268655+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 201,
                    "rows": 7418
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1659,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.141,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1199,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0736,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0532,
                    "rating": 8.1
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 1.0,
                  "accurateOwnHalfPasses": 12.0253,
                  "accurateLongBalls": 9.2617,
                  "possessionLostCtrl": 22.2912,
                  "goalkeeperValueNormalized": 0.041,
                  "sweeper_accuracy": 0.4959,
                  "accurateKeeperSweeper": 1.0364
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.928640604019165,
                    "model_output": 2.9286,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "save_contribution",
                        "importance": 0.0391
                      },
                      {
                        "name": "goalsPrevented",
                        "importance": 0.0375
                      },
                      {
                        "name": "savedShotsFromInsideTheBox",
                        "importance": 0.0373
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.0364
                      },
                      {
                        "name": "rating",
                        "importance": 0.0359
                      }
                    ],
                    "decomposition": {
                      "base": 2.922,
                      "items": [
                        {
                          "name": "ballRecovery",
                          "contribution": 0.041
                        },
                        {
                          "name": "commanding_index",
                          "contribution": 0.0327
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0277
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "contribution": -0.0205
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.0182
                        }
                      ],
                      "others": -0.0371,
                      "total": 2.9286,
                      "log_link": true,
                      "margin_base": 1.072276,
                      "item_margins": [
                        {
                          "name": "ballRecovery",
                          "margin": 0.013948
                        },
                        {
                          "name": "commanding_index",
                          "margin": 0.010981
                        },
                        {
                          "name": "rating",
                          "margin": -0.009304
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "margin": -0.00693
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": 0.006165
                        }
                      ],
                      "others_margin": -0.012597
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.05595356598496437,
                    "model_output": -0.056,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0381
                      },
                      {
                        "name": "totalOwnHalfPasses",
                        "importance": 0.0373
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0364
                      },
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0359
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0355
                      }
                    ],
                    "decomposition": {
                      "base": -0.0283,
                      "items": [
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": 0.0431
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0263
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0189
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0175
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0145
                        }
                      ],
                      "others": -0.0752,
                      "total": -0.056,
                      "log_link": false,
                      "margin_base": -0.028288,
                      "item_margins": [
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": 0.043059
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.026282
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.018937
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.017493
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.014512
                        }
                      ],
                      "others_margin": -0.075089
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.864493370056152,
                    "model_output": 6.8645,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0399
                      },
                      {
                        "name": "accurateKeeperSweeper",
                        "importance": 0.0395
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0383
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0383
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0363
                      }
                    ],
                    "decomposition": {
                      "base": 6.9871,
                      "items": [
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0696
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.058
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.031
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0264
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0206
                        }
                      ],
                      "others": -0.033,
                      "total": 6.8645,
                      "log_link": false,
                      "margin_base": 6.987111,
                      "item_margins": [
                        {
                          "name": "totalLongBalls",
                          "margin": -0.069606
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.058036
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": -0.030988
                        },
                        {
                          "name": "touches",
                          "margin": -0.026352
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.020612
                        }
                      ],
                      "others_margin": -0.033095
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 9,
                  "role_matches": 9,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0145, quality 0.641)",
              "stats": {
                "saves": 2.9711,
                "goals_prevented": -0.0568,
                "rating": 6.8645,
                "minutes": 90.0,
                "total_pass": 40.1392,
                "accurate_pass": 18.4422,
                "total_long_balls": 30.379,
                "accurate_long_balls": 9.396,
                "touches": 54.9559,
                "clearances": 0.9455,
                "ball_recovery": 12.5394,
                "high_claims": 1.4182,
                "punches": 0.9587,
                "aerial_won": 0.6824,
                "sweeper_actions": 1.2601,
                "sweeper_accurate": 1.0514,
                "saves_inside_box": 2.3467,
                "possession_lost": 22.6144,
                "duels_won": 1.7215,
                "duels_lost": 0.0,
                "total_contest": 0.2647,
                "won_contest": 0.2647,
                "fouls": 0.0,
                "fouls_drawn": 0.6202,
                "total_own_half_passes": 14.7699,
                "accurate_own_half_passes": 12.1997
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0145,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.9711,
                "goals_prevented": -0.0568,
                "rating": 6.8645,
                "minutes": 90.0,
                "total_pass": 40.1392,
                "accurate_pass": 18.4422,
                "total_long_balls": 30.379,
                "accurate_long_balls": 9.396,
                "touches": 54.9559,
                "clearances": 0.9455,
                "ball_recovery": 12.5394,
                "high_claims": 1.4182,
                "punches": 0.9587,
                "aerial_won": 0.6824,
                "sweeper_actions": 1.2601,
                "sweeper_accurate": 1.0514,
                "saves_inside_box": 2.3467,
                "possession_lost": 22.6144,
                "duels_won": 1.7215,
                "duels_lost": 0.0,
                "total_contest": 0.2647,
                "won_contest": 0.2647,
                "fouls": 0.0,
                "fouls_drawn": 0.6202,
                "total_own_half_passes": 14.7699,
                "accurate_own_half_passes": 12.1997
              },
              "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.9711,
                "goals_prevented": -0.0568,
                "rating": 6.8645,
                "minutes": 90.0,
                "total_pass": 40.1392,
                "accurate_pass": 18.4422,
                "total_long_balls": 30.379,
                "accurate_long_balls": 9.396,
                "touches": 54.9559,
                "clearances": 0.9455,
                "ball_recovery": 12.5394,
                "high_claims": 1.4182,
                "punches": 0.9587,
                "aerial_won": 0.6824,
                "sweeper_actions": 1.2601,
                "sweeper_accurate": 1.0514,
                "saves_inside_box": 2.3467,
                "possession_lost": 22.6144,
                "duels_won": 1.7215,
                "duels_lost": 0.0,
                "total_contest": 0.2647,
                "won_contest": 0.2647,
                "fouls": 0.0,
                "fouls_drawn": 0.6202,
                "total_own_half_passes": 14.7699,
                "accurate_own_half_passes": 12.1997,
                "gk_engine_opponent_lambda": 2.1716,
                "shots_faced": 20.6,
                "expected_saves": 5.04,
                "high_pressure_saves": 1.74,
                "opponent_faced": "Bukayo Saka, Martin Ødegaard",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Bukayo Saka, Martin Ødegaard",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 2.1716
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "saves": 2.9711,
                "goals_prevented": -0.0568,
                "rating": 6.8645,
                "minutes": 90.0,
                "total_pass": 40.1392,
                "accurate_pass": 18.4422,
                "total_long_balls": 30.379,
                "accurate_long_balls": 9.396,
                "touches": 54.9559,
                "clearances": 0.9455,
                "ball_recovery": 12.5394,
                "high_claims": 1.4182,
                "punches": 0.9587,
                "aerial_won": 0.6824,
                "sweeper_actions": 1.2601,
                "sweeper_accurate": 1.0514,
                "saves_inside_box": 2.3467,
                "possession_lost": 22.6144,
                "duels_won": 1.7215,
                "duels_lost": 0.0,
                "total_contest": 0.2647,
                "won_contest": 0.2647,
                "fouls": 0.0,
                "fouls_drawn": 0.6202,
                "total_own_half_passes": 14.7699,
                "accurate_own_half_passes": 12.1997,
                "gk_engine_opponent_lambda": 2.1716,
                "shots_faced": 20.6,
                "expected_saves": 5.04,
                "high_pressure_saves": 1.74,
                "opponent_faced": "Bukayo Saka, Martin Ødegaard",
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "saves": 2.9711,
                "goals_prevented": -0.0568,
                "rating": 6.8645,
                "minutes": 90.0,
                "total_pass": 40.1392,
                "accurate_pass": 18.4422,
                "total_long_balls": 30.379,
                "accurate_long_balls": 9.396,
                "touches": 54.9559,
                "clearances": 0.9455,
                "ball_recovery": 12.5394,
                "high_claims": 1.4182,
                "punches": 0.9587,
                "aerial_won": 0.6824,
                "sweeper_actions": 1.2601,
                "sweeper_accurate": 1.0514,
                "saves_inside_box": 2.3467,
                "possession_lost": 22.6144,
                "duels_won": 1.7215,
                "duels_lost": 0.0,
                "total_contest": 0.2647,
                "won_contest": 0.2647,
                "fouls": 0.0,
                "fouls_drawn": 0.6202,
                "total_own_half_passes": 14.7699,
                "accurate_own_half_passes": 12.1997,
                "gk_engine_opponent_lambda": 2.1716,
                "shots_faced": 18.8,
                "expected_saves": 4.6,
                "high_pressure_saves": 1.58,
                "opponent_faced": "Bukayo Saka, Martin Ødegaard",
                "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": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 20.6,
                  "after": 18.8
                },
                {
                  "stat": "expected_saves",
                  "before": 5.04,
                  "after": 4.6
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 1.74,
                  "after": 1.58
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 79.0)",
              "stats": {
                "saves": 2.9711,
                "goals_prevented": -0.0568,
                "rating": 6.8645,
                "minutes": 90.0,
                "total_pass": 40.1392,
                "accurate_pass": 18.4422,
                "total_long_balls": 30.379,
                "accurate_long_balls": 9.396,
                "touches": 54.9559,
                "clearances": 0.9455,
                "ball_recovery": 12.5394,
                "high_claims": 1.4182,
                "punches": 0.9587,
                "aerial_won": 0.6824,
                "sweeper_actions": 1.2601,
                "sweeper_accurate": 1.0514,
                "saves_inside_box": 2.3467,
                "possession_lost": 22.6144,
                "duels_won": 1.7215,
                "duels_lost": 0.0,
                "total_contest": 0.2647,
                "won_contest": 0.2647,
                "fouls": 0.0,
                "fouls_drawn": 0.6202,
                "total_own_half_passes": 14.7699,
                "accurate_own_half_passes": 12.1997,
                "gk_engine_opponent_lambda": 2.1716,
                "shots_faced": 18.8,
                "expected_saves": 4.6,
                "high_pressure_saves": 1.58,
                "opponent_faced": "Bukayo Saka, Martin Ødegaard",
                "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": 4,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1105,
                "fifa_rank": 972.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "saves": 2.9711,
                "goals_prevented": -0.0568,
                "rating": 6.8645,
                "minutes": 90.0,
                "total_pass": 40.1392,
                "accurate_pass": 18.4422,
                "total_long_balls": 30.379,
                "accurate_long_balls": 9.396,
                "touches": 54.9559,
                "clearances": 0.9455,
                "ball_recovery": 12.5394,
                "high_claims": 1.4182,
                "punches": 0.9587,
                "aerial_won": 0.6824,
                "sweeper_actions": 1.2601,
                "sweeper_accurate": 1.0514,
                "saves_inside_box": 2.3467,
                "possession_lost": 22.6144,
                "duels_won": 1.7215,
                "duels_lost": 0.0,
                "total_contest": 0.2647,
                "won_contest": 0.2647,
                "fouls": 0.0,
                "fouls_drawn": 0.6202,
                "total_own_half_passes": 14.7699,
                "accurate_own_half_passes": 12.1997,
                "gk_engine_opponent_lambda": 2.1716,
                "shots_faced": 18.8,
                "expected_saves": 4.6,
                "high_pressure_saves": 1.58,
                "opponent_faced": "Bukayo Saka, Martin Ødegaard",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "saves": 2.9711,
                "goals_prevented": -0.0568,
                "rating": 6.8645,
                "minutes": 90.0,
                "total_pass": 40.1392,
                "accurate_pass": 18.4422,
                "total_long_balls": 30.379,
                "accurate_long_balls": 9.396,
                "touches": 54.9559,
                "clearances": 0.9455,
                "ball_recovery": 12.5394,
                "high_claims": 1.4182,
                "punches": 0.9587,
                "aerial_won": 0.6824,
                "sweeper_actions": 1.2601,
                "sweeper_accurate": 1.0514,
                "saves_inside_box": 2.3467,
                "possession_lost": 22.6144,
                "duels_won": 1.7215,
                "duels_lost": 0.0,
                "total_contest": 0.2647,
                "won_contest": 0.2647,
                "fouls": 0.0,
                "fouls_drawn": 0.6202,
                "total_own_half_passes": 14.7699,
                "accurate_own_half_passes": 12.1997,
                "gk_engine_opponent_lambda": 2.1716,
                "shots_faced": 18.8,
                "expected_saves": 4.6,
                "high_pressure_saves": 1.58,
                "opponent_faced": "Bukayo Saka, Martin Ødegaard",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0
              }
            }
          ]
        },
        "Lewie Coyle": {
          "player_id": 827587,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 173,
          "market_value": 2700000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.585,
            "minutes": 79,
            "total_pass": 20,
            "accurate_pass": 16,
            "duels_won": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 9,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 35,
            "possession_lost": 8.5998,
            "dispossessed": 0.1871,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0345,
            "expected_assists": 0.0133,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 6,
            "total_progression": 24,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Martin Ødegaard, Myles Lewis-Skelly",
            "matchup_zone": "LWB vs RW + RB",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0339,
            "projected_assists": 0,
            "assist_probability": 0.0132,
            "finishing_factor": 0.8,
            "creation_factor": 0.8333,
            "fifa_overall": 70.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 77,
                "rating": 6.2,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0609,
                "expected_assists": 0.0068,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 16,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 2,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 65,
                "rating": 6.8,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0135,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 22,
                "accurate_pass": 18,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 0,
                "clearances": 4,
                "aerial_won": 0,
                "duels_won": 3,
                "ball_recovery": 4,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0535,
                "expected_assists": 0.0016,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 12,
                "tackles": 2,
                "clearances": 4,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0047,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 16,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0356,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 31,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 82,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1344,
                "expected_assists": 0.0123,
                "total_shots": 1,
                "total_pass": 18,
                "accurate_pass": 14,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 64,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0073,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 7,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 70,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4885,
            "combined_rank_score": 2981.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 391.0,
            "sofascore_rating": 6.95,
            "sofascore_appearances": 2.0,
            "fifa_rank": 5572.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.585,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lewie Coyle",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Cédric Zesiger",
                  "ranking": 4880
                },
                {
                  "player_name": "Timothé Cognat",
                  "ranking": 4881
                },
                {
                  "player_name": "Alvyn Sanches",
                  "ranking": 4882
                },
                {
                  "player_name": "Mattia Zanotti",
                  "ranking": 4883
                },
                {
                  "player_name": "Silas Andersen",
                  "ranking": 4884
                }
              ],
              "lower": [
                {
                  "player_name": "Gil Dias",
                  "ranking": 4886
                },
                {
                  "player_name": "Rafik Guitane",
                  "ranking": 4887
                },
                {
                  "player_name": "Marcelo Flores",
                  "ranking": 4888
                },
                {
                  "player_name": "Sikou Niakaté",
                  "ranking": 4889
                },
                {
                  "player_name": "Mateu Morey",
                  "ranking": 4890
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.763,
          "history_matches": 9,
          "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": 9,
            "data_confidence": 0.763,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9928,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 114.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0867
            },
            "rationale": "XGBoost regressor (D_service) evaluated 9 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.09, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.6626,
                "tackles": 1.4737,
                "tackles_won": 0.9138,
                "clearances": 2.2701,
                "aerial_won": 0.6785,
                "total_shots": 0.4678,
                "rating": 6.585,
                "minutes": 79.22,
                "total_pass": 20.4578,
                "accurate_pass": 15.9503,
                "duels_won": 2.119,
                "total_long_balls": 3.0937,
                "accurate_long_balls": 1.1844,
                "total_own_half_passes": 7.616,
                "accurate_own_half_passes": 6.7318,
                "total_opp_half_passes": 12.8418,
                "accurate_opp_half_passes": 9.2185,
                "crosses_total": 2.3946,
                "crosses_accurate": 0.2396,
                "touches": 34.9861,
                "possession_lost": 8.6622,
                "dispossessed": 0.1885,
                "duels_lost": 1.2852,
                "aerial_lost": 0.4399,
                "total_contest": 0.2398,
                "won_contest": 0.1199,
                "ball_recovery": 2.5491,
                "challenges_lost": 0.3013,
                "fouls": 0.2357,
                "fouls_drawn": 0.7419,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0311,
                "expected_assists": 0.0101,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.4339,
                "total_progression": 24.4324,
                "progressive_carries": 0.3448,
                "key_pass": 0.1398,
                "shots_off_target": 0.4678
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.1659,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.141,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1199,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0736,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0532,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.9572,
                  "aerialWon": 0.1158,
                  "totalClearance_p90": 2.4653,
                  "totalTackle": 1.1415,
                  "totalTackle_p90": 1.3566
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.6626208424568176,
                    "model_output": 0.6626,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.1443
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0882
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0332
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0211
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0205
                        }
                      ],
                      "others": -0.0776,
                      "total": 0.6626,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.181103
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.114569
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.041527
                        },
                        {
                          "name": "touches",
                          "margin": -0.027351
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.0273
                        }
                      ],
                      "others_margin": -0.110871
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.473716378211975,
                    "model_output": 1.4737,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1839
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0812
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0528
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0453
                        },
                        {
                          "name": "rating",
                          "contribution": 0.034
                        }
                      ],
                      "others": -0.058,
                      "total": 1.4737,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124461
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.05307
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.034848
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.029782
                        },
                        {
                          "name": "rating",
                          "margin": 0.022469
                        }
                      ],
                      "others_margin": -0.038641
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.9138030409812927,
                    "model_output": 0.9138,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1215
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.053
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.034
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0325
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0319
                        }
                      ],
                      "others": -0.0363,
                      "total": 0.9138,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.133851
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.056159
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.036461
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.034778
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.034117
                        }
                      ],
                      "others_margin": -0.039019
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.270099639892578,
                    "model_output": 2.2701,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.5127
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3882
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.3416
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.259
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2353
                        }
                      ],
                      "others": -0.1852,
                      "total": 2.2701,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.162623
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125521
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.109575
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.091916
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.09151
                        }
                      ],
                      "others_margin": -0.078456
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.6784918308258057,
                    "model_output": 0.6785,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.502
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1116
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0866
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0657
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0509
                        }
                      ],
                      "others": -0.0976,
                      "total": 0.6785,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.456547
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.121034
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.092584
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.07646
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.063572
                        }
                      ],
                      "others_margin": -0.134348
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.46784868836402893,
                    "model_output": 0.4678,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0525
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0265
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.021
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0155
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0134
                        }
                      ],
                      "others": -0.0583,
                      "total": 0.4678,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.052457
                        },
                        {
                          "name": "rating",
                          "margin": -0.026464
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.021047
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.015482
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.013373
                        }
                      ],
                      "others_margin": -0.058332
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.5849995613098145,
                    "model_output": 6.585,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0597
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0288
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0229
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.021
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0208
                        }
                      ],
                      "others": -0.0606,
                      "total": 6.585,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.059662
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.028785
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.022928
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.020989
                        },
                        {
                          "name": "rating",
                          "margin": -0.020843
                        }
                      ],
                      "others_margin": -0.060575
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 9,
                  "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.9928, quality 0.437)",
              "stats": {
                "interceptions": 0.6578,
                "tackles": 1.4631,
                "tackles_won": 0.9072,
                "clearances": 2.2538,
                "aerial_won": 0.6736,
                "total_shots": 0.4645,
                "rating": 6.585,
                "minutes": 79.22,
                "total_pass": 20.3105,
                "accurate_pass": 15.8355,
                "duels_won": 2.1037,
                "total_long_balls": 3.0714,
                "accurate_long_balls": 1.1759,
                "total_own_half_passes": 7.5612,
                "accurate_own_half_passes": 6.6833,
                "total_opp_half_passes": 12.7493,
                "accurate_opp_half_passes": 9.1521,
                "crosses_total": 2.3774,
                "crosses_accurate": 0.2379,
                "touches": 34.7342,
                "possession_lost": 8.5998,
                "dispossessed": 0.1871,
                "duels_lost": 1.2759,
                "aerial_lost": 0.4367,
                "total_contest": 0.2381,
                "won_contest": 0.119,
                "ball_recovery": 2.5307,
                "challenges_lost": 0.2991,
                "fouls": 0.234,
                "fouls_drawn": 0.7366,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0309,
                "expected_assists": 0.01,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.3876,
                "total_progression": 24.2565,
                "progressive_carries": 0.3423,
                "key_pass": 0.1388,
                "shots_off_target": 0.4644
              },
              "params": {
                "market_value_eur": 2700000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9928,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0201)",
              "stats": {
                "interceptions": 0.6582,
                "tackles": 1.4631,
                "tackles_won": 0.9026,
                "clearances": 2.2538,
                "aerial_won": 0.6736,
                "total_shots": 0.4552,
                "rating": 6.585,
                "minutes": 79.22,
                "total_pass": 20.3105,
                "accurate_pass": 15.8355,
                "duels_won": 2.1037,
                "total_long_balls": 3.0714,
                "accurate_long_balls": 1.1759,
                "total_own_half_passes": 7.5612,
                "accurate_own_half_passes": 6.6833,
                "total_opp_half_passes": 12.7493,
                "accurate_opp_half_passes": 9.1521,
                "crosses_total": 2.3568,
                "crosses_accurate": 0.2379,
                "touches": 34.7342,
                "possession_lost": 8.5998,
                "dispossessed": 0.1871,
                "duels_lost": 1.2759,
                "aerial_lost": 0.4367,
                "total_contest": 0.2381,
                "won_contest": 0.119,
                "ball_recovery": 2.5307,
                "challenges_lost": 0.2991,
                "fouls": 0.2565,
                "fouls_drawn": 0.7763,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0309,
                "expected_assists": 0.01,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.3876,
                "total_progression": 24.2565,
                "progressive_carries": 0.3423,
                "key_pass": 0.1388,
                "shots_off_target": 0.4644
              },
              "params": {
                "blend_weight": 0.0201,
                "history_matches": 9,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8802,
                "prior_reliability": 0.0867,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.7366,
                  "after": 0.7763
                },
                {
                  "stat": "fouls",
                  "before": 0.234,
                  "after": 0.2565
                },
                {
                  "stat": "totalCross",
                  "before": 2.3774,
                  "after": 2.3568
                },
                {
                  "stat": "totalShots",
                  "before": 0.4645,
                  "after": 0.4552
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.6582,
                "tackles": 1.4631,
                "tackles_won": 0.9026,
                "clearances": 2.2538,
                "aerial_won": 0.6736,
                "total_shots": 0.4644,
                "rating": 6.585,
                "minutes": 79.22,
                "total_pass": 20.3105,
                "accurate_pass": 15.8355,
                "duels_won": 2.1037,
                "total_long_balls": 3.0714,
                "accurate_long_balls": 1.1759,
                "total_own_half_passes": 7.5612,
                "accurate_own_half_passes": 6.6833,
                "total_opp_half_passes": 12.7493,
                "accurate_opp_half_passes": 9.1521,
                "crosses_total": 2.3568,
                "crosses_accurate": 0.2379,
                "touches": 34.7342,
                "possession_lost": 8.5998,
                "dispossessed": 0.1871,
                "duels_lost": 1.2759,
                "aerial_lost": 0.4367,
                "total_contest": 0.2381,
                "won_contest": 0.119,
                "ball_recovery": 2.5307,
                "challenges_lost": 0.2991,
                "fouls": 0.2565,
                "fouls_drawn": 0.7763,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0309,
                "expected_assists": 0.01,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.3876,
                "total_progression": 24.2565,
                "progressive_carries": 0.3423,
                "key_pass": 0.1388,
                "shots_off_target": 0.4644
              },
              "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.6582,
                "tackles": 1.4631,
                "tackles_won": 0.9026,
                "clearances": 2.2538,
                "aerial_won": 0.6736,
                "total_shots": 0.4644,
                "rating": 6.585,
                "minutes": 79.22,
                "total_pass": 20.3105,
                "accurate_pass": 15.8355,
                "duels_won": 2.1037,
                "total_long_balls": 3.0714,
                "accurate_long_balls": 1.1759,
                "total_own_half_passes": 7.5612,
                "accurate_own_half_passes": 6.6833,
                "total_opp_half_passes": 12.7493,
                "accurate_opp_half_passes": 9.1521,
                "crosses_total": 2.3568,
                "crosses_accurate": 0.2379,
                "touches": 34.7342,
                "possession_lost": 8.5998,
                "dispossessed": 0.1871,
                "duels_lost": 1.2759,
                "aerial_lost": 0.4367,
                "total_contest": 0.2381,
                "won_contest": 0.119,
                "ball_recovery": 2.5307,
                "challenges_lost": 0.2991,
                "fouls": 0.2565,
                "fouls_drawn": 0.7763,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0309,
                "expected_assists": 0.01,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.3876,
                "total_progression": 24.2565,
                "progressive_carries": 0.3423,
                "key_pass": 0.1388,
                "shots_off_target": 0.4644,
                "opponent_faced": "Martin Ødegaard, Myles Lewis-Skelly",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Martin Ødegaard, Myles Lewis-Skelly",
                  "matchup_zone": "LWB vs RW + RB"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.6582,
                "tackles": 1.4631,
                "tackles_won": 0.9026,
                "clearances": 2.2538,
                "aerial_won": 0.6736,
                "total_shots": 0.4644,
                "rating": 6.585,
                "minutes": 79.22,
                "total_pass": 20.3105,
                "accurate_pass": 15.8355,
                "duels_won": 2.1037,
                "total_long_balls": 3.0714,
                "accurate_long_balls": 1.1759,
                "total_own_half_passes": 7.5612,
                "accurate_own_half_passes": 6.6833,
                "total_opp_half_passes": 12.7493,
                "accurate_opp_half_passes": 9.1521,
                "crosses_total": 2.3568,
                "crosses_accurate": 0.2379,
                "touches": 34.7342,
                "possession_lost": 8.5998,
                "dispossessed": 0.1871,
                "duels_lost": 1.2759,
                "aerial_lost": 0.4367,
                "total_contest": 0.2381,
                "won_contest": 0.119,
                "ball_recovery": 2.5307,
                "challenges_lost": 0.2991,
                "fouls": 0.2565,
                "fouls_drawn": 0.7763,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0309,
                "expected_assists": 0.01,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.3876,
                "total_progression": 24.2565,
                "progressive_carries": 0.3423,
                "key_pass": 0.1388,
                "shots_off_target": 0.4644,
                "opponent_faced": "Martin Ødegaard, Myles Lewis-Skelly",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.6582,
                "tackles": 1.4631,
                "tackles_won": 0.9026,
                "clearances": 2.2538,
                "aerial_won": 0.6736,
                "total_shots": 0.4644,
                "rating": 6.585,
                "minutes": 79.22,
                "total_pass": 20.3105,
                "accurate_pass": 15.8355,
                "duels_won": 2.1037,
                "total_long_balls": 3.0714,
                "accurate_long_balls": 1.1759,
                "total_own_half_passes": 7.5612,
                "accurate_own_half_passes": 6.6833,
                "total_opp_half_passes": 12.7493,
                "accurate_opp_half_passes": 9.1521,
                "crosses_total": 2.3568,
                "crosses_accurate": 0.2379,
                "touches": 34.7342,
                "possession_lost": 8.5998,
                "dispossessed": 0.1871,
                "duels_lost": 1.2759,
                "aerial_lost": 0.4367,
                "total_contest": 0.2381,
                "won_contest": 0.119,
                "ball_recovery": 2.5307,
                "challenges_lost": 0.2991,
                "fouls": 0.2565,
                "fouls_drawn": 0.7763,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0345,
                "expected_assists": 0.0133,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.3876,
                "total_progression": 24.2565,
                "progressive_carries": 0.3423,
                "key_pass": 0.1388,
                "shots_off_target": 0.4644,
                "opponent_faced": "Martin Ødegaard, Myles Lewis-Skelly",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8333
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 70.0)",
              "stats": {
                "interceptions": 0.6582,
                "tackles": 1.4631,
                "tackles_won": 0.9026,
                "clearances": 2.2538,
                "aerial_won": 0.6736,
                "total_shots": 0.4644,
                "rating": 6.585,
                "minutes": 79.22,
                "total_pass": 20.3105,
                "accurate_pass": 15.8355,
                "duels_won": 2.1037,
                "total_long_balls": 3.0714,
                "accurate_long_balls": 1.1759,
                "total_own_half_passes": 7.5612,
                "accurate_own_half_passes": 6.6833,
                "total_opp_half_passes": 12.7493,
                "accurate_opp_half_passes": 9.1521,
                "crosses_total": 2.3568,
                "crosses_accurate": 0.2379,
                "touches": 34.7342,
                "possession_lost": 8.5998,
                "dispossessed": 0.1871,
                "duels_lost": 1.2759,
                "aerial_lost": 0.4367,
                "total_contest": 0.2381,
                "won_contest": 0.119,
                "ball_recovery": 2.5307,
                "challenges_lost": 0.2991,
                "fouls": 0.2565,
                "fouls_drawn": 0.7763,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0345,
                "expected_assists": 0.0133,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.3876,
                "total_progression": 24.2565,
                "progressive_carries": 0.3423,
                "key_pass": 0.1388,
                "shots_off_target": 0.4644,
                "opponent_faced": "Martin Ødegaard, Myles Lewis-Skelly",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8333,
                "fifa_overall": 70.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": 4885,
                "fifa_rank": 5572.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 70.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.6582,
                "tackles": 1.4631,
                "tackles_won": 0.9026,
                "clearances": 2.2538,
                "aerial_won": 0.6736,
                "total_shots": 0.4644,
                "rating": 6.585,
                "minutes": 79.22,
                "total_pass": 20.3105,
                "accurate_pass": 15.8355,
                "duels_won": 2.1037,
                "total_long_balls": 3.0714,
                "accurate_long_balls": 1.1759,
                "total_own_half_passes": 7.5612,
                "accurate_own_half_passes": 6.6833,
                "total_opp_half_passes": 12.7493,
                "accurate_opp_half_passes": 9.1521,
                "crosses_total": 2.3568,
                "crosses_accurate": 0.2379,
                "touches": 34.7342,
                "possession_lost": 8.5998,
                "dispossessed": 0.1871,
                "duels_lost": 1.2759,
                "aerial_lost": 0.4367,
                "total_contest": 0.2381,
                "won_contest": 0.119,
                "ball_recovery": 2.5307,
                "challenges_lost": 0.2991,
                "fouls": 0.2565,
                "fouls_drawn": 0.7763,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0345,
                "expected_assists": 0.0133,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.3876,
                "total_progression": 24.2565,
                "progressive_carries": 0.3423,
                "key_pass": 0.1388,
                "shots_off_target": 0.4644,
                "opponent_faced": "Martin Ødegaard, Myles Lewis-Skelly",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0339,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8333,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0339,
                "goal_rate": 0.0,
                "scorer_weight": 0.0276,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0322,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.6582,
                "tackles": 1.4631,
                "tackles_won": 0.9026,
                "clearances": 2.2538,
                "aerial_won": 0.6736,
                "total_shots": 0.4644,
                "rating": 6.585,
                "minutes": 79.22,
                "total_pass": 20.3105,
                "accurate_pass": 15.8355,
                "duels_won": 2.1037,
                "total_long_balls": 3.0714,
                "accurate_long_balls": 1.1759,
                "total_own_half_passes": 7.5612,
                "accurate_own_half_passes": 6.6833,
                "total_opp_half_passes": 12.7493,
                "accurate_opp_half_passes": 9.1521,
                "crosses_total": 2.3568,
                "crosses_accurate": 0.2379,
                "touches": 34.7342,
                "possession_lost": 8.5998,
                "dispossessed": 0.1871,
                "duels_lost": 1.2759,
                "aerial_lost": 0.4367,
                "total_contest": 0.2381,
                "won_contest": 0.119,
                "ball_recovery": 2.5307,
                "challenges_lost": 0.2991,
                "fouls": 0.2565,
                "fouls_drawn": 0.7763,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0345,
                "expected_assists": 0.0133,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.3876,
                "total_progression": 24.2565,
                "progressive_carries": 0.3423,
                "key_pass": 0.1388,
                "shots_off_target": 0.4644,
                "opponent_faced": "Martin Ødegaard, Myles Lewis-Skelly",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0339,
                "projected_assists": 0,
                "assist_probability": 0.0132,
                "finishing_factor": 0.8,
                "creation_factor": 0.8333,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0132,
                "assist_rate": 0.0,
                "provider_weight": 0.0111,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0182,
                "creation_factor": 0.8333,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 14
              }
            }
          ]
        },
        "John Egan": {
          "player_id": 100578,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 15,
          "height": 185,
          "market_value": 1500000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 6.713,
            "minutes": 82,
            "total_pass": 21,
            "accurate_pass": 16,
            "duels_won": 3,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 12,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 34,
            "possession_lost": 5.9759,
            "dispossessed": 0.5397,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0456,
            "expected_assists": 0.0276,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0022,
            "ball_carries": 5,
            "total_progression": 30,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.4,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.361,
            "opponent_faced": "Declan Rice",
            "pressing_zone": "LW vs CB",
            "matchup_zone": "LW vs CB",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0446,
            "projected_assists": 0,
            "assist_probability": 0.0272,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.122,
                "expected_assists": 0.002,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 8,
                "tackles": 1,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0505,
                "expected_assists": 0.001,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 10,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 25,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 9,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0364,
                "expected_assists": 0.1606,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 17,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 78,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0085,
                "expected_assists": 0.0014,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 19,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0428,
                "expected_assists": 0.0026,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 29,
                "accurate_pass": 23,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 10,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 13,
                "tackles": 3,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0034,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 20,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 10,
                "aerial_won": 5,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 25,
                "tackles": 1,
                "clearances": 17,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4038,
            "combined_rank_score": 2020.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 108.0,
            "sofascore_rating": 7.45,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3933.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.713,
            "source_file": "data/player_rankings.csv",
            "player_name": "John Egan",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Matias Moreno",
                  "ranking": 4033
                },
                {
                  "player_name": "Fresneda",
                  "ranking": 4034
                },
                {
                  "player_name": "Leonardo Lelo",
                  "ranking": 4035
                },
                {
                  "player_name": "Harrison Armstrong",
                  "ranking": 4036
                },
                {
                  "player_name": "Gastón Benedetti",
                  "ranking": 4037
                }
              ],
              "lower": [
                {
                  "player_name": "Vitalii Buialskii",
                  "ranking": 4039
                },
                {
                  "player_name": "Raul Florucz",
                  "ranking": 4040
                },
                {
                  "player_name": "Nahuel Guzmán",
                  "ranking": 4041
                },
                {
                  "player_name": "Lucas Ocampos",
                  "ranking": 4042
                },
                {
                  "player_name": "Oussama Idrissi",
                  "ranking": 4043
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 9,
          "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": 9,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9928,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 9 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.8511,
                "tackles": 1.4419,
                "tackles_won": 0.8261,
                "clearances": 5.3784,
                "aerial_won": 1.5755,
                "total_shots": 0.5029,
                "rating": 6.713,
                "minutes": 81.81,
                "total_pass": 21.1042,
                "accurate_pass": 16.2522,
                "duels_won": 3.3143,
                "total_long_balls": 3.7444,
                "accurate_long_balls": 1.8502,
                "total_own_half_passes": 13.0177,
                "accurate_own_half_passes": 12.0829,
                "total_opp_half_passes": 8.0865,
                "accurate_opp_half_passes": 4.1693,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 34.534,
                "possession_lost": 6.0192,
                "dispossessed": 0.5436,
                "duels_lost": 3.2813,
                "aerial_lost": 2.2632,
                "total_contest": 0.1952,
                "won_contest": 0.1952,
                "ball_recovery": 1.9122,
                "challenges_lost": 0.2277,
                "fouls": 0.2469,
                "fouls_drawn": 0.3696,
                "blocks": 1.0771,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0411,
                "expected_assists": 0.0209,
                "shots_on_target": 0.1019,
                "big_chances_created": 0.0,
                "xgot": 0.002,
                "ball_carries": 5.1664,
                "total_progression": 30.6088,
                "progressive_carries": 0.1952,
                "key_pass": 0.1199,
                "shots_off_target": 0.401
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1659,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.141,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1199,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0736,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0532,
                    "rating": 7.6
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 6.1433,
                  "aerialWon": 1.4551,
                  "totalClearance_p90": 6.9398,
                  "totalTackle": 1.3569,
                  "totalTackle_p90": 1.5835
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.851144552230835,
                    "model_output": 0.8511,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1002
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0456
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0338
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0281
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0178
                        }
                      ],
                      "others": -0.0511,
                      "total": 0.8511,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.108861
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.048088
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.037238
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.030983
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.019559
                        }
                      ],
                      "others_margin": -0.058162
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.4419350624084473,
                    "model_output": 1.4419,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2013
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0614
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0528
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0505
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0397
                        }
                      ],
                      "others": -0.1447,
                      "total": 1.4419,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.135503
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.037893
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.03253
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.032121
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.02535
                        }
                      ],
                      "others_margin": -0.095612
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8260993957519531,
                    "model_output": 0.8261,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1236
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0512
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0415
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0332
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0292
                        }
                      ],
                      "others": -0.057,
                      "total": 0.8261,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.135988
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.054122
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.046162
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.037061
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.032577
                        }
                      ],
                      "others_margin": -0.066614
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.378391742706299,
                    "model_output": 5.3784,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.7872
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5426
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.3715
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.2078
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.1181
                        }
                      ],
                      "others": 0.1717,
                      "total": 5.3784,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.207385
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12142
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.075366
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.0398
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.022427
                        }
                      ],
                      "others_margin": 0.032462
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.5754833221435547,
                    "model_output": 1.5755,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1593
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1566
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1501
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1376
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1139
                        }
                      ],
                      "others": -0.2839,
                      "total": 1.5755,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.110037
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.097519
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.08531
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.072299
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.059467
                        }
                      ],
                      "others_margin": -0.16573
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5028653144836426,
                    "model_output": 0.5029,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.051
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0242
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0166
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0137
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0126
                        }
                      ],
                      "others": -0.038,
                      "total": 0.5029,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.051
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.024157
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.016557
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.013688
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.012649
                        }
                      ],
                      "others_margin": -0.038022
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.712960243225098,
                    "model_output": 6.713,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0464
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0233
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0203
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.016
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0144
                        }
                      ],
                      "others": -0.006,
                      "total": 6.713,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.046441
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.023306
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.020292
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.015958
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014446
                        }
                      ],
                      "others_margin": -0.005961
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 9,
                  "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.9928, quality 0.437)",
              "stats": {
                "interceptions": 0.845,
                "tackles": 1.4316,
                "tackles_won": 0.8202,
                "clearances": 5.3397,
                "aerial_won": 1.5641,
                "total_shots": 0.4993,
                "rating": 6.713,
                "minutes": 81.81,
                "total_pass": 20.9522,
                "accurate_pass": 16.1352,
                "duels_won": 3.2904,
                "total_long_balls": 3.7174,
                "accurate_long_balls": 1.8369,
                "total_own_half_passes": 12.924,
                "accurate_own_half_passes": 11.9959,
                "total_opp_half_passes": 8.0283,
                "accurate_opp_half_passes": 4.1393,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 34.2854,
                "possession_lost": 5.9759,
                "dispossessed": 0.5397,
                "duels_lost": 3.2577,
                "aerial_lost": 2.2469,
                "total_contest": 0.1938,
                "won_contest": 0.1938,
                "ball_recovery": 1.8984,
                "challenges_lost": 0.2261,
                "fouls": 0.2451,
                "fouls_drawn": 0.3669,
                "blocks": 1.0693,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0408,
                "expected_assists": 0.0207,
                "shots_on_target": 0.1012,
                "big_chances_created": 0.0,
                "xgot": 0.002,
                "ball_carries": 5.1292,
                "total_progression": 30.3884,
                "progressive_carries": 0.1938,
                "key_pass": 0.119,
                "shots_off_target": 0.3981
              },
              "params": {
                "market_value_eur": 1500000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9928,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0309)",
              "stats": {
                "interceptions": 0.847,
                "tackles": 1.4316,
                "tackles_won": 0.8089,
                "clearances": 5.3397,
                "aerial_won": 1.5641,
                "total_shots": 0.4838,
                "rating": 6.713,
                "minutes": 81.81,
                "total_pass": 20.9522,
                "accurate_pass": 16.1352,
                "duels_won": 3.2904,
                "total_long_balls": 3.7174,
                "accurate_long_balls": 1.8369,
                "total_own_half_passes": 12.924,
                "accurate_own_half_passes": 11.9959,
                "total_opp_half_passes": 8.0283,
                "accurate_opp_half_passes": 4.1393,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 34.2854,
                "possession_lost": 5.9759,
                "dispossessed": 0.5397,
                "duels_lost": 3.2577,
                "aerial_lost": 2.2469,
                "total_contest": 0.1938,
                "won_contest": 0.1938,
                "ball_recovery": 1.8984,
                "challenges_lost": 0.2261,
                "fouls": 0.2375,
                "fouls_drawn": 0.3696,
                "blocks": 1.0693,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0408,
                "expected_assists": 0.0207,
                "shots_on_target": 0.0981,
                "big_chances_created": 0.0,
                "xgot": 0.002,
                "ball_carries": 5.1292,
                "total_progression": 30.3884,
                "progressive_carries": 0.1938,
                "key_pass": 0.119,
                "shots_off_target": 0.3981
              },
              "params": {
                "blend_weight": 0.0309,
                "history_matches": 9,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.909,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.4993,
                  "after": 0.4838
                },
                {
                  "stat": "wonTackle",
                  "before": 0.8202,
                  "after": 0.8089
                },
                {
                  "stat": "fouls",
                  "before": 0.2451,
                  "after": 0.2375
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.847,
                "tackles": 1.4316,
                "tackles_won": 0.8089,
                "clearances": 5.3397,
                "aerial_won": 1.5641,
                "total_shots": 0.4962,
                "rating": 6.713,
                "minutes": 81.81,
                "total_pass": 20.9522,
                "accurate_pass": 16.1352,
                "duels_won": 3.2904,
                "total_long_balls": 3.7174,
                "accurate_long_balls": 1.8369,
                "total_own_half_passes": 12.924,
                "accurate_own_half_passes": 11.9959,
                "total_opp_half_passes": 8.0283,
                "accurate_opp_half_passes": 4.1393,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 34.2854,
                "possession_lost": 5.9759,
                "dispossessed": 0.5397,
                "duels_lost": 3.2577,
                "aerial_lost": 2.2469,
                "total_contest": 0.1938,
                "won_contest": 0.1938,
                "ball_recovery": 1.8984,
                "challenges_lost": 0.2261,
                "fouls": 0.2375,
                "fouls_drawn": 0.3696,
                "blocks": 1.0693,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0408,
                "expected_assists": 0.0207,
                "shots_on_target": 0.0981,
                "big_chances_created": 0.0,
                "xgot": 0.002,
                "ball_carries": 5.1292,
                "total_progression": 30.3884,
                "progressive_carries": 0.1938,
                "key_pass": 0.119,
                "shots_off_target": 0.3981
              },
              "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.847,
                "tackles": 1.4316,
                "tackles_won": 0.8089,
                "clearances": 5.3397,
                "aerial_won": 1.5641,
                "total_shots": 0.4962,
                "rating": 6.713,
                "minutes": 81.81,
                "total_pass": 20.9522,
                "accurate_pass": 16.1352,
                "duels_won": 3.2904,
                "total_long_balls": 3.7174,
                "accurate_long_balls": 1.8369,
                "total_own_half_passes": 12.924,
                "accurate_own_half_passes": 11.9959,
                "total_opp_half_passes": 8.0283,
                "accurate_opp_half_passes": 4.1393,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 34.2854,
                "possession_lost": 5.9759,
                "dispossessed": 0.5397,
                "duels_lost": 3.2577,
                "aerial_lost": 2.2469,
                "total_contest": 0.1938,
                "won_contest": 0.1938,
                "ball_recovery": 1.8984,
                "challenges_lost": 0.2261,
                "fouls": 0.2375,
                "fouls_drawn": 0.3696,
                "blocks": 1.0693,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0408,
                "expected_assists": 0.0207,
                "shots_on_target": 0.0981,
                "big_chances_created": 0.0,
                "xgot": 0.002,
                "ball_carries": 5.1292,
                "total_progression": 30.3884,
                "progressive_carries": 0.1938,
                "key_pass": 0.119,
                "shots_off_target": 0.3981,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.361,
                "opponent_faced": "Declan Rice",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Declan Rice",
                  "matchup_zone": "LW vs CB"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.847,
                "tackles": 1.4316,
                "tackles_won": 0.8089,
                "clearances": 5.3397,
                "aerial_won": 1.5641,
                "total_shots": 0.4962,
                "rating": 6.713,
                "minutes": 81.81,
                "total_pass": 20.9522,
                "accurate_pass": 16.1352,
                "duels_won": 3.2904,
                "total_long_balls": 3.7174,
                "accurate_long_balls": 1.8369,
                "total_own_half_passes": 12.924,
                "accurate_own_half_passes": 11.9959,
                "total_opp_half_passes": 8.0283,
                "accurate_opp_half_passes": 4.1393,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 34.2854,
                "possession_lost": 5.9759,
                "dispossessed": 0.5397,
                "duels_lost": 3.2577,
                "aerial_lost": 2.2469,
                "total_contest": 0.1938,
                "won_contest": 0.1938,
                "ball_recovery": 1.8984,
                "challenges_lost": 0.2261,
                "fouls": 0.2375,
                "fouls_drawn": 0.3696,
                "blocks": 1.0693,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0408,
                "expected_assists": 0.0207,
                "shots_on_target": 0.0981,
                "big_chances_created": 0.0,
                "xgot": 0.002,
                "ball_carries": 5.1292,
                "total_progression": 30.3884,
                "progressive_carries": 0.1938,
                "key_pass": 0.119,
                "shots_off_target": 0.3981,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.361,
                "opponent_faced": "Declan Rice",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.847,
                "tackles": 1.4316,
                "tackles_won": 0.8089,
                "clearances": 5.3397,
                "aerial_won": 1.5641,
                "total_shots": 0.4962,
                "rating": 6.713,
                "minutes": 81.81,
                "total_pass": 20.9522,
                "accurate_pass": 16.1352,
                "duels_won": 3.2904,
                "total_long_balls": 3.7174,
                "accurate_long_balls": 1.8369,
                "total_own_half_passes": 12.924,
                "accurate_own_half_passes": 11.9959,
                "total_opp_half_passes": 8.0283,
                "accurate_opp_half_passes": 4.1393,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 34.2854,
                "possession_lost": 5.9759,
                "dispossessed": 0.5397,
                "duels_lost": 3.2577,
                "aerial_lost": 2.2469,
                "total_contest": 0.1938,
                "won_contest": 0.1938,
                "ball_recovery": 1.8984,
                "challenges_lost": 0.2261,
                "fouls": 0.2375,
                "fouls_drawn": 0.3696,
                "blocks": 1.0693,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0456,
                "expected_assists": 0.0276,
                "shots_on_target": 0.0981,
                "big_chances_created": 0.0,
                "xgot": 0.0022,
                "ball_carries": 5.1292,
                "total_progression": 30.3884,
                "progressive_carries": 0.1938,
                "key_pass": 0.119,
                "shots_off_target": 0.3981,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.361,
                "opponent_faced": "Declan Rice",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0207,
                  "after": 0.0276
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 72.0)",
              "stats": {
                "interceptions": 0.847,
                "tackles": 1.4316,
                "tackles_won": 0.8089,
                "clearances": 5.3397,
                "aerial_won": 1.5641,
                "total_shots": 0.4962,
                "rating": 6.713,
                "minutes": 81.81,
                "total_pass": 20.9522,
                "accurate_pass": 16.1352,
                "duels_won": 3.2904,
                "total_long_balls": 3.7174,
                "accurate_long_balls": 1.8369,
                "total_own_half_passes": 12.924,
                "accurate_own_half_passes": 11.9959,
                "total_opp_half_passes": 8.0283,
                "accurate_opp_half_passes": 4.1393,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 34.2854,
                "possession_lost": 5.9759,
                "dispossessed": 0.5397,
                "duels_lost": 3.2577,
                "aerial_lost": 2.2469,
                "total_contest": 0.1938,
                "won_contest": 0.1938,
                "ball_recovery": 1.8984,
                "challenges_lost": 0.2261,
                "fouls": 0.2375,
                "fouls_drawn": 0.3696,
                "blocks": 1.0693,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0456,
                "expected_assists": 0.0276,
                "shots_on_target": 0.0981,
                "big_chances_created": 0.0,
                "xgot": 0.0022,
                "ball_carries": 5.1292,
                "total_progression": 30.3884,
                "progressive_carries": 0.1938,
                "key_pass": 0.119,
                "shots_off_target": 0.3981,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.361,
                "opponent_faced": "Declan Rice",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4038,
                "fifa_rank": 3933.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.847,
                "tackles": 1.4316,
                "tackles_won": 0.8089,
                "clearances": 5.3397,
                "aerial_won": 1.5641,
                "total_shots": 0.4962,
                "rating": 6.713,
                "minutes": 81.81,
                "total_pass": 20.9522,
                "accurate_pass": 16.1352,
                "duels_won": 3.2904,
                "total_long_balls": 3.7174,
                "accurate_long_balls": 1.8369,
                "total_own_half_passes": 12.924,
                "accurate_own_half_passes": 11.9959,
                "total_opp_half_passes": 8.0283,
                "accurate_opp_half_passes": 4.1393,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 34.2854,
                "possession_lost": 5.9759,
                "dispossessed": 0.5397,
                "duels_lost": 3.2577,
                "aerial_lost": 2.2469,
                "total_contest": 0.1938,
                "won_contest": 0.1938,
                "ball_recovery": 1.8984,
                "challenges_lost": 0.2261,
                "fouls": 0.2375,
                "fouls_drawn": 0.3696,
                "blocks": 1.0693,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0456,
                "expected_assists": 0.0276,
                "shots_on_target": 0.0981,
                "big_chances_created": 0.0,
                "xgot": 0.0022,
                "ball_carries": 5.1292,
                "total_progression": 30.3884,
                "progressive_carries": 0.1938,
                "key_pass": 0.119,
                "shots_off_target": 0.3981,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.361,
                "opponent_faced": "Declan Rice",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0446,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0446,
                "goal_rate": 0.0,
                "scorer_weight": 0.0365,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0426,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.847,
                "tackles": 1.4316,
                "tackles_won": 0.8089,
                "clearances": 5.3397,
                "aerial_won": 1.5641,
                "total_shots": 0.4962,
                "rating": 6.713,
                "minutes": 81.81,
                "total_pass": 20.9522,
                "accurate_pass": 16.1352,
                "duels_won": 3.2904,
                "total_long_balls": 3.7174,
                "accurate_long_balls": 1.8369,
                "total_own_half_passes": 12.924,
                "accurate_own_half_passes": 11.9959,
                "total_opp_half_passes": 8.0283,
                "accurate_opp_half_passes": 4.1393,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 34.2854,
                "possession_lost": 5.9759,
                "dispossessed": 0.5397,
                "duels_lost": 3.2577,
                "aerial_lost": 2.2469,
                "total_contest": 0.1938,
                "won_contest": 0.1938,
                "ball_recovery": 1.8984,
                "challenges_lost": 0.2261,
                "fouls": 0.2375,
                "fouls_drawn": 0.3696,
                "blocks": 1.0693,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0456,
                "expected_assists": 0.0276,
                "shots_on_target": 0.0981,
                "big_chances_created": 0.0,
                "xgot": 0.0022,
                "ball_carries": 5.1292,
                "total_progression": 30.3884,
                "progressive_carries": 0.1938,
                "key_pass": 0.119,
                "shots_off_target": 0.3981,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.361,
                "opponent_faced": "Declan Rice",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0446,
                "projected_assists": 0,
                "assist_probability": 0.0272,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0272,
                "assist_rate": 0.0,
                "provider_weight": 0.0221,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0362,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 14
              }
            }
          ]
        },
        "Semi Ajayi": {
          "player_id": 307274,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 6,
          "height": 193,
          "market_value": 930000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 6.7748,
            "minutes": 89,
            "total_pass": 30,
            "accurate_pass": 23,
            "duels_won": 5,
            "total_long_balls": 6,
            "accurate_long_balls": 2,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 9,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 44,
            "possession_lost": 8.2971,
            "dispossessed": 0.368,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0667,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.044,
            "expected_assists": 0.0079,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0573,
            "ball_carries": 11,
            "total_progression": 39,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.8,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.637,
            "opponent_faced": "Bukayo Saka",
            "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.043,
            "projected_assists": 0,
            "assist_probability": 0.0079,
            "finishing_factor": 1.25,
            "creation_factor": 0.8945,
            "fifa_overall": 70.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0061,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 44,
                "accurate_pass": 33,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 5,
                "duels_won": 9,
                "ball_recovery": 1,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 21,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 6,
                "tackles_won": 5,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 0,
                "duels_won": 6,
                "ball_recovery": 5,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0041,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 23,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0207,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 14,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0091,
                "expected_assists": 0.0069,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 44,
                "accurate_pass": 36,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1266,
                "expected_assists": 0.0013,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 23,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 23,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0037,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 20,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 64,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.523,
                "expected_assists": 0.0016,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 13,
                "interceptions": 2,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4764,
            "combined_rank_score": 2846.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 122.0,
            "sofascore_rating": 7.4,
            "sofascore_appearances": 2.0,
            "fifa_rank": 5571.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7748,
            "source_file": "data/player_rankings.csv",
            "player_name": "Semi Ajayi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mark Delgado",
                  "ranking": 4759
                },
                {
                  "player_name": "Daniel Cataño",
                  "ranking": 4760
                },
                {
                  "player_name": "Ryan Gauld",
                  "ranking": 4761
                },
                {
                  "player_name": "Marcus Ingvartsen",
                  "ranking": 4762
                },
                {
                  "player_name": "Junior Alonso",
                  "ranking": 4763
                }
              ],
              "lower": [
                {
                  "player_name": "Gerardo Arteaga",
                  "ranking": 4765
                },
                {
                  "player_name": "Hirving Lozano",
                  "ranking": 4766
                },
                {
                  "player_name": "Mauro Silveira",
                  "ranking": 4767
                },
                {
                  "player_name": "Manu García",
                  "ranking": 4768
                },
                {
                  "player_name": "Ewen Jaouen",
                  "ranking": 4769
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.767,
          "history_matches": 9,
          "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": 9,
            "data_confidence": 0.767,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9928,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 153.0,
              "goals_per90": 0.5882352941176471,
              "assists_per90": 0.0,
              "shots_per90": 0.59,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.1133
            },
            "rationale": "XGBoost regressor (D_service) evaluated 9 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.11, gls/90: 0.5882352941176471, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.1771,
                "tackles": 1.9827,
                "tackles_won": 1.2814,
                "clearances": 4.3529,
                "aerial_won": 1.6482,
                "total_shots": 0.4155,
                "rating": 6.7748,
                "minutes": 88.87,
                "total_pass": 30.0338,
                "accurate_pass": 23.4826,
                "duels_won": 4.9033,
                "total_long_balls": 5.627,
                "accurate_long_balls": 2.4071,
                "total_own_half_passes": 17.2775,
                "accurate_own_half_passes": 14.4839,
                "total_opp_half_passes": 12.7563,
                "accurate_opp_half_passes": 8.9987,
                "crosses_total": 0.683,
                "crosses_accurate": 0.0,
                "touches": 43.8871,
                "possession_lost": 8.3573,
                "dispossessed": 0.3707,
                "duels_lost": 2.8613,
                "aerial_lost": 0.8683,
                "total_contest": 0.9557,
                "won_contest": 0.728,
                "ball_recovery": 3.0577,
                "challenges_lost": 0.9598,
                "fouls": 0.4348,
                "fouls_drawn": 0.0626,
                "blocks": 0.3904,
                "goals": 0.0532,
                "goal_rate": 0.0532,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0059,
                "shots_on_target": 0.0532,
                "big_chances_created": 0.0,
                "xgot": 0.0517,
                "ball_carries": 10.9285,
                "total_progression": 39.6513,
                "progressive_carries": 0.8259,
                "key_pass": 0.1659,
                "shots_off_target": 0.3623
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1659,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.141,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1199,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0736,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0532,
                    "rating": 7.6
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 4.1028,
                  "aerialWon": 1.8566,
                  "totalClearance_p90": 4.2109,
                  "totalTackle": 2.2561,
                  "totalTackle_p90": 2.2561
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1771178245544434,
                    "model_output": 1.1771,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1203
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0989
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0179
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0145
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0103
                        }
                      ],
                      "others": 0.0441,
                      "total": 1.1771,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129406
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.095087
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.016248
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.013
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.009163
                        }
                      ],
                      "others_margin": 0.038134
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.982744812965393,
                    "model_output": 1.9827,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1938
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1008
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.1017
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.1047
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0895
                        }
                      ],
                      "others": 0.0047,
                      "total": 1.9827,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.13072
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.061771
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.058682
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.057062
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.046307
                        }
                      ],
                      "others_margin": 0.002437
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.2813926935195923,
                    "model_output": 1.2814,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1281
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0939
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0912
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0949
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0652
                        }
                      ],
                      "others": -0.0401,
                      "total": 1.2814,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.140699
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.091808
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.081758
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.078511
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.050565
                        }
                      ],
                      "others_margin": -0.030781
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.352869510650635,
                    "model_output": 4.3529,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4516
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.3566
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.2922
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.1449
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1167
                        }
                      ],
                      "others": -0.135,
                      "total": 4.3529,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124178
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.088206
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.0669
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.03262
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.02634
                        }
                      ],
                      "others_margin": -0.030551
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.6481871604919434,
                    "model_output": 1.6482,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.2395
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1688
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1094
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0638
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0539
                        }
                      ],
                      "others": -0.1215,
                      "total": 1.6482,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.161154
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.099739
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.059727
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.034414
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.029998
                        }
                      ],
                      "others_margin": -0.071126
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.415475457906723,
                    "model_output": 0.4155,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0971
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0515
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.0114
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.011
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0106
                        }
                      ],
                      "others": -0.0311,
                      "total": 0.4155,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.097124
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.05152
                        },
                        {
                          "name": "totalProgression",
                          "margin": 0.011394
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.010953
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.010636
                        }
                      ],
                      "others_margin": -0.031247
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.774784088134766,
                    "model_output": 6.7748,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0173
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0149
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0135
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0094
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": 0.0086
                        }
                      ],
                      "others": 0.0225,
                      "total": 6.7748,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.017298
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014902
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.013511
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.00938
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": 0.00857
                        }
                      ],
                      "others_margin": 0.022523
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 9,
                  "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.9928, quality 0.437)",
              "stats": {
                "interceptions": 1.1686,
                "tackles": 1.9685,
                "tackles_won": 1.2722,
                "clearances": 4.3215,
                "aerial_won": 1.6363,
                "total_shots": 0.4125,
                "rating": 6.7748,
                "minutes": 88.87,
                "total_pass": 29.8176,
                "accurate_pass": 23.3135,
                "duels_won": 4.868,
                "total_long_balls": 5.5865,
                "accurate_long_balls": 2.3898,
                "total_own_half_passes": 17.1531,
                "accurate_own_half_passes": 14.3796,
                "total_opp_half_passes": 12.6645,
                "accurate_opp_half_passes": 8.9339,
                "crosses_total": 0.6781,
                "crosses_accurate": 0.0,
                "touches": 43.5711,
                "possession_lost": 8.2971,
                "dispossessed": 0.368,
                "duels_lost": 2.8407,
                "aerial_lost": 0.862,
                "total_contest": 0.9488,
                "won_contest": 0.7228,
                "ball_recovery": 3.0357,
                "challenges_lost": 0.9529,
                "fouls": 0.4317,
                "fouls_drawn": 0.0621,
                "blocks": 0.3876,
                "goals": 0.0528,
                "goal_rate": 0.0528,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0394,
                "expected_assists": 0.0059,
                "shots_on_target": 0.0528,
                "big_chances_created": 0.0,
                "xgot": 0.0513,
                "ball_carries": 10.8498,
                "total_progression": 39.3658,
                "progressive_carries": 0.82,
                "key_pass": 0.1647,
                "shots_off_target": 0.3597
              },
              "params": {
                "market_value_eur": 930000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9928,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0263)",
              "stats": {
                "interceptions": 1.1684,
                "tackles": 1.9685,
                "tackles_won": 1.254,
                "clearances": 4.3215,
                "aerial_won": 1.6363,
                "total_shots": 0.417,
                "rating": 6.7748,
                "minutes": 88.87,
                "total_pass": 29.8176,
                "accurate_pass": 23.3135,
                "duels_won": 4.868,
                "total_long_balls": 5.5865,
                "accurate_long_balls": 2.3898,
                "total_own_half_passes": 17.1531,
                "accurate_own_half_passes": 14.3796,
                "total_opp_half_passes": 12.6645,
                "accurate_opp_half_passes": 8.9339,
                "crosses_total": 0.6755,
                "crosses_accurate": 0.0,
                "touches": 43.5711,
                "possession_lost": 8.2971,
                "dispossessed": 0.368,
                "duels_lost": 2.8407,
                "aerial_lost": 0.862,
                "total_contest": 0.9488,
                "won_contest": 0.7228,
                "ball_recovery": 3.0357,
                "challenges_lost": 0.9529,
                "fouls": 0.4203,
                "fouls_drawn": 0.0757,
                "blocks": 0.3876,
                "goals": 0.0667,
                "goal_rate": 0.0667,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0394,
                "expected_assists": 0.0059,
                "shots_on_target": 0.0667,
                "big_chances_created": 0.0,
                "xgot": 0.0513,
                "ball_carries": 10.8498,
                "total_progression": 39.3658,
                "progressive_carries": 0.82,
                "key_pass": 0.1647,
                "shots_off_target": 0.3597
              },
              "params": {
                "blend_weight": 0.0263,
                "history_matches": 9,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9874,
                "prior_reliability": 0.1133,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.2722,
                  "after": 1.254
                },
                {
                  "stat": "goals",
                  "before": 0.0528,
                  "after": 0.0667
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.0528,
                  "after": 0.0667
                },
                {
                  "stat": "wasFouled",
                  "before": 0.0621,
                  "after": 0.0757
                },
                {
                  "stat": "fouls",
                  "before": 0.4317,
                  "after": 0.4203
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1684,
                "tackles": 1.9685,
                "tackles_won": 1.254,
                "clearances": 4.3215,
                "aerial_won": 1.6363,
                "total_shots": 0.4264,
                "rating": 6.7748,
                "minutes": 88.87,
                "total_pass": 29.8176,
                "accurate_pass": 23.3135,
                "duels_won": 4.868,
                "total_long_balls": 5.5865,
                "accurate_long_balls": 2.3898,
                "total_own_half_passes": 17.1531,
                "accurate_own_half_passes": 14.3796,
                "total_opp_half_passes": 12.6645,
                "accurate_opp_half_passes": 8.9339,
                "crosses_total": 0.6755,
                "crosses_accurate": 0.0,
                "touches": 43.5711,
                "possession_lost": 8.2971,
                "dispossessed": 0.368,
                "duels_lost": 2.8407,
                "aerial_lost": 0.862,
                "total_contest": 0.9488,
                "won_contest": 0.7228,
                "ball_recovery": 3.0357,
                "challenges_lost": 0.9529,
                "fouls": 0.4203,
                "fouls_drawn": 0.0757,
                "blocks": 0.3876,
                "goals": 0.0667,
                "goal_rate": 0.0667,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0394,
                "expected_assists": 0.0059,
                "shots_on_target": 0.0667,
                "big_chances_created": 0.0,
                "xgot": 0.0513,
                "ball_carries": 10.8498,
                "total_progression": 39.3658,
                "progressive_carries": 0.82,
                "key_pass": 0.1647,
                "shots_off_target": 0.3597
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 1.1684,
                "tackles": 1.9685,
                "tackles_won": 1.254,
                "clearances": 4.3215,
                "aerial_won": 1.6363,
                "total_shots": 0.4264,
                "rating": 6.7748,
                "minutes": 88.87,
                "total_pass": 29.8176,
                "accurate_pass": 23.3135,
                "duels_won": 4.868,
                "total_long_balls": 5.5865,
                "accurate_long_balls": 2.3898,
                "total_own_half_passes": 17.1531,
                "accurate_own_half_passes": 14.3796,
                "total_opp_half_passes": 12.6645,
                "accurate_opp_half_passes": 8.9339,
                "crosses_total": 0.6755,
                "crosses_accurate": 0.0,
                "touches": 43.5711,
                "possession_lost": 8.2971,
                "dispossessed": 0.368,
                "duels_lost": 2.8407,
                "aerial_lost": 0.862,
                "total_contest": 0.9488,
                "won_contest": 0.7228,
                "ball_recovery": 3.0357,
                "challenges_lost": 0.9529,
                "fouls": 0.4203,
                "fouls_drawn": 0.0757,
                "blocks": 0.3876,
                "goals": 0.0667,
                "goal_rate": 0.0667,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0394,
                "expected_assists": 0.0059,
                "shots_on_target": 0.0667,
                "big_chances_created": 0.0,
                "xgot": 0.0513,
                "ball_carries": 10.8498,
                "total_progression": 39.3658,
                "progressive_carries": 0.82,
                "key_pass": 0.1647,
                "shots_off_target": 0.3597,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.637,
                "opponent_faced": "Bukayo Saka",
                "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": "Bukayo Saka",
                  "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 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1684,
                "tackles": 1.9685,
                "tackles_won": 1.254,
                "clearances": 4.3215,
                "aerial_won": 1.6363,
                "total_shots": 0.4264,
                "rating": 6.7748,
                "minutes": 88.87,
                "total_pass": 29.8176,
                "accurate_pass": 23.3135,
                "duels_won": 4.868,
                "total_long_balls": 5.5865,
                "accurate_long_balls": 2.3898,
                "total_own_half_passes": 17.1531,
                "accurate_own_half_passes": 14.3796,
                "total_opp_half_passes": 12.6645,
                "accurate_opp_half_passes": 8.9339,
                "crosses_total": 0.6755,
                "crosses_accurate": 0.0,
                "touches": 43.5711,
                "possession_lost": 8.2971,
                "dispossessed": 0.368,
                "duels_lost": 2.8407,
                "aerial_lost": 0.862,
                "total_contest": 0.9488,
                "won_contest": 0.7228,
                "ball_recovery": 3.0357,
                "challenges_lost": 0.9529,
                "fouls": 0.4203,
                "fouls_drawn": 0.0757,
                "blocks": 0.3876,
                "goal_rate": 0.0667,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0394,
                "expected_assists": 0.0059,
                "shots_on_target": 0.0667,
                "big_chances_created": 0.0,
                "xgot": 0.0513,
                "ball_carries": 10.8498,
                "total_progression": 39.3658,
                "progressive_carries": 0.82,
                "key_pass": 0.1647,
                "shots_off_target": 0.3597,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.637,
                "opponent_faced": "Bukayo Saka",
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.1684,
                "tackles": 1.9685,
                "tackles_won": 1.254,
                "clearances": 4.3215,
                "aerial_won": 1.6363,
                "total_shots": 0.4264,
                "rating": 6.7748,
                "minutes": 88.87,
                "total_pass": 29.8176,
                "accurate_pass": 23.3135,
                "duels_won": 4.868,
                "total_long_balls": 5.5865,
                "accurate_long_balls": 2.3898,
                "total_own_half_passes": 17.1531,
                "accurate_own_half_passes": 14.3796,
                "total_opp_half_passes": 12.6645,
                "accurate_opp_half_passes": 8.9339,
                "crosses_total": 0.6755,
                "crosses_accurate": 0.0,
                "touches": 43.5711,
                "possession_lost": 8.2971,
                "dispossessed": 0.368,
                "duels_lost": 2.8407,
                "aerial_lost": 0.862,
                "total_contest": 0.9488,
                "won_contest": 0.7228,
                "ball_recovery": 3.0357,
                "challenges_lost": 0.9529,
                "fouls": 0.4203,
                "fouls_drawn": 0.0757,
                "blocks": 0.3876,
                "goal_rate": 0.0667,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.044,
                "expected_assists": 0.0079,
                "shots_on_target": 0.0667,
                "big_chances_created": 0.0,
                "xgot": 0.0573,
                "ball_carries": 10.8498,
                "total_progression": 39.3658,
                "progressive_carries": 0.82,
                "key_pass": 0.1647,
                "shots_off_target": 0.3597,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.637,
                "opponent_faced": "Bukayo Saka",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8945
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 70.0)",
              "stats": {
                "interceptions": 1.1684,
                "tackles": 1.9685,
                "tackles_won": 1.254,
                "clearances": 4.3215,
                "aerial_won": 1.6363,
                "total_shots": 0.4264,
                "rating": 6.7748,
                "minutes": 88.87,
                "total_pass": 29.8176,
                "accurate_pass": 23.3135,
                "duels_won": 4.868,
                "total_long_balls": 5.5865,
                "accurate_long_balls": 2.3898,
                "total_own_half_passes": 17.1531,
                "accurate_own_half_passes": 14.3796,
                "total_opp_half_passes": 12.6645,
                "accurate_opp_half_passes": 8.9339,
                "crosses_total": 0.6755,
                "crosses_accurate": 0.0,
                "touches": 43.5711,
                "possession_lost": 8.2971,
                "dispossessed": 0.368,
                "duels_lost": 2.8407,
                "aerial_lost": 0.862,
                "total_contest": 0.9488,
                "won_contest": 0.7228,
                "ball_recovery": 3.0357,
                "challenges_lost": 0.9529,
                "fouls": 0.4203,
                "fouls_drawn": 0.0757,
                "blocks": 0.3876,
                "goal_rate": 0.0667,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.044,
                "expected_assists": 0.0079,
                "shots_on_target": 0.0667,
                "big_chances_created": 0.0,
                "xgot": 0.0573,
                "ball_carries": 10.8498,
                "total_progression": 39.3658,
                "progressive_carries": 0.82,
                "key_pass": 0.1647,
                "shots_off_target": 0.3597,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.637,
                "opponent_faced": "Bukayo Saka",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8945,
                "fifa_overall": 70.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": 4764,
                "fifa_rank": 5571.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 70.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1.1684,
                "tackles": 1.9685,
                "tackles_won": 1.254,
                "clearances": 4.3215,
                "aerial_won": 1.6363,
                "total_shots": 0.4264,
                "rating": 6.7748,
                "minutes": 88.87,
                "total_pass": 29.8176,
                "accurate_pass": 23.3135,
                "duels_won": 4.868,
                "total_long_balls": 5.5865,
                "accurate_long_balls": 2.3898,
                "total_own_half_passes": 17.1531,
                "accurate_own_half_passes": 14.3796,
                "total_opp_half_passes": 12.6645,
                "accurate_opp_half_passes": 8.9339,
                "crosses_total": 0.6755,
                "crosses_accurate": 0.0,
                "touches": 43.5711,
                "possession_lost": 8.2971,
                "dispossessed": 0.368,
                "duels_lost": 2.8407,
                "aerial_lost": 0.862,
                "total_contest": 0.9488,
                "won_contest": 0.7228,
                "ball_recovery": 3.0357,
                "challenges_lost": 0.9529,
                "fouls": 0.4203,
                "fouls_drawn": 0.0757,
                "blocks": 0.3876,
                "goal_rate": 0.0667,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.044,
                "expected_assists": 0.0079,
                "shots_on_target": 0.0667,
                "big_chances_created": 0.0,
                "xgot": 0.0573,
                "ball_carries": 10.8498,
                "total_progression": 39.3658,
                "progressive_carries": 0.82,
                "key_pass": 0.1647,
                "shots_off_target": 0.3597,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.637,
                "opponent_faced": "Bukayo Saka",
                "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.043,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8945,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.043,
                "goal_rate": 0.0667,
                "scorer_weight": 0.055,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0643,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.1684,
                "tackles": 1.9685,
                "tackles_won": 1.254,
                "clearances": 4.3215,
                "aerial_won": 1.6363,
                "total_shots": 0.4264,
                "rating": 6.7748,
                "minutes": 88.87,
                "total_pass": 29.8176,
                "accurate_pass": 23.3135,
                "duels_won": 4.868,
                "total_long_balls": 5.5865,
                "accurate_long_balls": 2.3898,
                "total_own_half_passes": 17.1531,
                "accurate_own_half_passes": 14.3796,
                "total_opp_half_passes": 12.6645,
                "accurate_opp_half_passes": 8.9339,
                "crosses_total": 0.6755,
                "crosses_accurate": 0.0,
                "touches": 43.5711,
                "possession_lost": 8.2971,
                "dispossessed": 0.368,
                "duels_lost": 2.8407,
                "aerial_lost": 0.862,
                "total_contest": 0.9488,
                "won_contest": 0.7228,
                "ball_recovery": 3.0357,
                "challenges_lost": 0.9529,
                "fouls": 0.4203,
                "fouls_drawn": 0.0757,
                "blocks": 0.3876,
                "goal_rate": 0.0667,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.044,
                "expected_assists": 0.0079,
                "shots_on_target": 0.0667,
                "big_chances_created": 0.0,
                "xgot": 0.0573,
                "ball_carries": 10.8498,
                "total_progression": 39.3658,
                "progressive_carries": 0.82,
                "key_pass": 0.1647,
                "shots_off_target": 0.3597,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.637,
                "opponent_faced": "Bukayo Saka",
                "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.043,
                "projected_assists": 0,
                "assist_probability": 0.0079,
                "finishing_factor": 1.25,
                "creation_factor": 0.8945,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0079,
                "assist_rate": 0.0,
                "provider_weight": 0.0071,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0116,
                "creation_factor": 0.8945,
                "appearance_weight": 1.0,
                "weight_rank": 13,
                "eligible_players": 14
              }
            }
          ]
        },
        "Nobel Mendy": {
          "player_id": 1458073,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 32,
          "height": 187,
          "market_value": 21000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 7,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 6.7891,
            "minutes": 77,
            "total_pass": 34,
            "accurate_pass": 29,
            "duels_won": 3,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 25,
            "accurate_own_half_passes": 23,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 49,
            "possession_lost": 6.4689,
            "dispossessed": 0.1245,
            "duels_lost": 4,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0999,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0793,
            "expected_assists": 0.0096,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0668,
            "ball_carries": 12,
            "total_progression": 20,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Bukayo Saka",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0762,
            "projected_assists": 0,
            "assist_probability": 0.0096,
            "finishing_factor": 1.2388,
            "creation_factor": 0.8741,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 52,
                "accurate_pass": 47,
                "tackles": 1,
                "tackles_won": 0,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 7,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2987,
                "expected_assists": 0.0023,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 21,
                "interceptions": 1,
                "clearances": 10,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 59,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0024,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 20,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 71,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0258,
                "expected_assists": 0.0017,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 18,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 4,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 59,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0107,
                "expected_assists": 0.0028,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 27,
                "accurate_pass": 21,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 64,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2783,
                "expected_assists": 0.0017,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 19,
                "accurate_pass": 18,
                "clearances": 12,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083706.0,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 36,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559.0",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083639.0,
              "match_date": "2026-05-14",
              "home_team": "Valencia",
              "away_team": "Rayo Vallecano",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0034,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 35,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 13,
                "aerial_won": 4,
                "duels_won": 8,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559.0",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083598.0,
              "match_date": "2026-05-11",
              "home_team": "Rayo Vallecano",
              "away_team": "Girona FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Rayo Vallecano",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 9,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559.0",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083440.0,
              "match_date": "2026-05-03",
              "home_team": "Getafe",
              "away_team": "Rayo Vallecano",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 17,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 16,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559.0",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3293,
            "combined_rank_score": 1240.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 62.0,
            "sofascore_rating": 7.65,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2419.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7891,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nobel Mendy",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Brooke Norton-Cuffy",
                  "ranking": 3288
                },
                {
                  "player_name": "Brenden Aaronson",
                  "ranking": 3289
                },
                {
                  "player_name": "Guruzeta",
                  "ranking": 3290
                },
                {
                  "player_name": "Igor Matanović",
                  "ranking": 3291
                },
                {
                  "player_name": "Ionuț Andrei Radu",
                  "ranking": 3292
                }
              ],
              "lower": [
                {
                  "player_name": "Michael Zetterer",
                  "ranking": 3294
                },
                {
                  "player_name": "Lukas Nmecha",
                  "ranking": 3295
                },
                {
                  "player_name": "Ruslan Malinovskyi",
                  "ranking": 3296
                },
                {
                  "player_name": "Ibrahim Mbaye",
                  "ranking": 3297
                },
                {
                  "player_name": "Unai Núñez",
                  "ranking": 3298
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.763,
          "history_matches": 30,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 30,
            "data_confidence": 0.763,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0058,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 121.0,
              "goals_per90": 0.7692307692307692,
              "assists_per90": 0.0,
              "shots_per90": 1.49,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.0867
            },
            "rationale": "XGBoost regressor (D_service) evaluated 30 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.09, gls/90: 0.7692307692307692, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.9862,
                "tackles": 1.3242,
                "tackles_won": 0.7622,
                "clearances": 6.4795,
                "aerial_won": 2.2642,
                "total_shots": 0.49,
                "rating": 6.7891,
                "minutes": 77.3,
                "total_pass": 34.2644,
                "accurate_pass": 28.718,
                "duels_won": 3.1957,
                "total_long_balls": 5.1948,
                "accurate_long_balls": 1.9385,
                "total_own_half_passes": 24.9238,
                "accurate_own_half_passes": 23.1785,
                "total_opp_half_passes": 9.3406,
                "accurate_opp_half_passes": 5.5394,
                "crosses_total": 0.4269,
                "crosses_accurate": 0.0,
                "touches": 48.7557,
                "possession_lost": 6.4316,
                "dispossessed": 0.1238,
                "duels_lost": 3.8871,
                "aerial_lost": 1.9157,
                "total_contest": 0.0166,
                "won_contest": 0.0144,
                "ball_recovery": 2.9332,
                "challenges_lost": 0.4317,
                "fouls": 1.5,
                "fouls_drawn": 0.3277,
                "blocks": 1.402,
                "goals": 0.0948,
                "goal_rate": 0.0948,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0706,
                "expected_assists": 0.0072,
                "shots_on_target": 0.257,
                "big_chances_created": 0.0366,
                "xgot": 0.0595,
                "ball_carries": 12.2404,
                "total_progression": 19.593,
                "progressive_carries": 0.2889,
                "key_pass": 0.0514,
                "shots_off_target": 0.233
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1512,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1285,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.1092,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0928,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.0789,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0671,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.057,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0485,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-11",
                    "opponent": "Girona FC",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0412,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.035,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 6.7717,
                  "aerialWon": 1.5876,
                  "totalClearance_p90": 7.9881,
                  "totalTackle": 1.308,
                  "totalTackle_p90": 1.6233
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9861643314361572,
                    "model_output": 0.9862,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1048
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0253
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0156
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0149
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.014
                        }
                      ],
                      "others": -0.0017,
                      "total": 0.9862,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.113605
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.025593
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.01551
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.014787
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.014023
                        }
                      ],
                      "others_margin": -0.00186
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.3241616487503052,
                    "model_output": 1.3242,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1749
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0446
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0434
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0344
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0297
                        }
                      ],
                      "others": -0.1729,
                      "total": 1.3242,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118696
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.028957
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.028181
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.022294
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.019671
                        }
                      ],
                      "others_margin": -0.122678
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7622293829917908,
                    "model_output": 0.7622,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1019
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0537
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.037
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0317
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0271
                        }
                      ],
                      "others": -0.1018,
                      "total": 0.7622,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.113483
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.058133
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.042201
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.036273
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.030829
                        }
                      ],
                      "others_margin": -0.125487
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.479451656341553,
                    "model_output": 6.4795,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.7692
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5629
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3873
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.4086
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1987
                        }
                      ],
                      "others": 0.737,
                      "total": 6.4794,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.203099
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.126204
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.078426
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.076563
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.035217
                        }
                      ],
                      "others_margin": 0.120742
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.264151096343994,
                    "model_output": 2.2642,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.1778
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2001
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2131
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1412
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1277
                        }
                      ],
                      "others": 0.0346,
                      "total": 2.2642,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.122037
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.121626
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.115081
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.069523
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.059001
                        }
                      ],
                      "others_margin": 0.015338
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4899755120277405,
                    "model_output": 0.49,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0618
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0331
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.025
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0249
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0112
                        }
                      ],
                      "others": -0.0474,
                      "total": 0.49,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.061771
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.03307
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.025045
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.024893
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.011235
                        }
                      ],
                      "others_margin": -0.047411
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.789144992828369,
                    "model_output": 6.7891,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0161
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0148
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": -0.0139
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0105
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0097
                        }
                      ],
                      "others": 0.0343,
                      "total": 6.7891,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.016053
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.01475
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": -0.013878
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.010478
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.009657
                        }
                      ],
                      "others_margin": 0.034227
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 30,
                  "role_matches": 28,
                  "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.641)",
              "stats": {
                "interceptions": 0.9919,
                "tackles": 1.3318,
                "tackles_won": 0.7667,
                "clearances": 6.517,
                "aerial_won": 2.2773,
                "total_shots": 0.4929,
                "rating": 6.7891,
                "minutes": 77.3,
                "total_pass": 34.4631,
                "accurate_pass": 28.8846,
                "duels_won": 3.2142,
                "total_long_balls": 5.2249,
                "accurate_long_balls": 1.9497,
                "total_own_half_passes": 25.0684,
                "accurate_own_half_passes": 23.3129,
                "total_opp_half_passes": 9.3948,
                "accurate_opp_half_passes": 5.5715,
                "crosses_total": 0.4294,
                "crosses_accurate": 0.0,
                "touches": 49.0385,
                "possession_lost": 6.4689,
                "dispossessed": 0.1245,
                "duels_lost": 3.9096,
                "aerial_lost": 1.9268,
                "total_contest": 0.0167,
                "won_contest": 0.0145,
                "ball_recovery": 2.9502,
                "challenges_lost": 0.4342,
                "fouls": 1.5087,
                "fouls_drawn": 0.3296,
                "blocks": 1.4101,
                "goals": 0.0953,
                "goal_rate": 0.0953,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.071,
                "expected_assists": 0.0072,
                "shots_on_target": 0.2585,
                "big_chances_created": 0.0368,
                "xgot": 0.0598,
                "ball_carries": 12.3114,
                "total_progression": 19.7066,
                "progressive_carries": 0.2906,
                "key_pass": 0.0517,
                "shots_off_target": 0.2344
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0058,
                "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.0081)",
              "stats": {
                "interceptions": 0.9839,
                "tackles": 1.3318,
                "tackles_won": 0.7658,
                "clearances": 6.517,
                "aerial_won": 2.2773,
                "total_shots": 0.4992,
                "rating": 6.7891,
                "minutes": 77.3,
                "total_pass": 34.4631,
                "accurate_pass": 28.8846,
                "duels_won": 3.2142,
                "total_long_balls": 5.2249,
                "accurate_long_balls": 1.9497,
                "total_own_half_passes": 25.0684,
                "accurate_own_half_passes": 23.3129,
                "total_opp_half_passes": 9.3948,
                "accurate_opp_half_passes": 5.5715,
                "crosses_total": 0.4259,
                "crosses_accurate": 0.0,
                "touches": 49.0385,
                "possession_lost": 6.4689,
                "dispossessed": 0.1245,
                "duels_lost": 3.9096,
                "aerial_lost": 1.9268,
                "total_contest": 0.0167,
                "won_contest": 0.0145,
                "ball_recovery": 2.9502,
                "challenges_lost": 0.4342,
                "fouls": 1.5019,
                "fouls_drawn": 0.3269,
                "blocks": 1.4101,
                "goals": 0.0999,
                "goal_rate": 0.0999,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.071,
                "expected_assists": 0.0072,
                "shots_on_target": 0.2667,
                "big_chances_created": 0.0368,
                "xgot": 0.0598,
                "ball_carries": 12.3114,
                "total_progression": 19.7066,
                "progressive_carries": 0.2906,
                "key_pass": 0.0517,
                "shots_off_target": 0.2344
              },
              "params": {
                "blend_weight": 0.0081,
                "history_matches": 30,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8589,
                "prior_reliability": 0.0867,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2585,
                  "after": 0.2667
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.9919,
                  "after": 0.9839
                },
                {
                  "stat": "fouls",
                  "before": 1.5087,
                  "after": 1.5019
                },
                {
                  "stat": "totalShots",
                  "before": 0.4929,
                  "after": 0.4992
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9839,
                "tackles": 1.3318,
                "tackles_won": 0.7658,
                "clearances": 6.517,
                "aerial_won": 2.2773,
                "total_shots": 0.5011,
                "rating": 6.7891,
                "minutes": 77.3,
                "total_pass": 34.4631,
                "accurate_pass": 28.8846,
                "duels_won": 3.2142,
                "total_long_balls": 5.2249,
                "accurate_long_balls": 1.9497,
                "total_own_half_passes": 25.0684,
                "accurate_own_half_passes": 23.3129,
                "total_opp_half_passes": 9.3948,
                "accurate_opp_half_passes": 5.5715,
                "crosses_total": 0.4259,
                "crosses_accurate": 0.0,
                "touches": 49.0385,
                "possession_lost": 6.4689,
                "dispossessed": 0.1245,
                "duels_lost": 3.9096,
                "aerial_lost": 1.9268,
                "total_contest": 0.0167,
                "won_contest": 0.0145,
                "ball_recovery": 2.9502,
                "challenges_lost": 0.4342,
                "fouls": 1.5019,
                "fouls_drawn": 0.3269,
                "blocks": 1.4101,
                "goals": 0.0999,
                "goal_rate": 0.0999,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.071,
                "expected_assists": 0.0072,
                "shots_on_target": 0.2667,
                "big_chances_created": 0.0368,
                "xgot": 0.0598,
                "ball_carries": 12.3114,
                "total_progression": 19.7066,
                "progressive_carries": 0.2906,
                "key_pass": 0.0517,
                "shots_off_target": 0.2344
              },
              "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.9839,
                "tackles": 1.3318,
                "tackles_won": 0.7658,
                "clearances": 6.517,
                "aerial_won": 2.2773,
                "total_shots": 0.5011,
                "rating": 6.7891,
                "minutes": 77.3,
                "total_pass": 34.4631,
                "accurate_pass": 28.8846,
                "duels_won": 3.2142,
                "total_long_balls": 5.2249,
                "accurate_long_balls": 1.9497,
                "total_own_half_passes": 25.0684,
                "accurate_own_half_passes": 23.3129,
                "total_opp_half_passes": 9.3948,
                "accurate_opp_half_passes": 5.5715,
                "crosses_total": 0.4259,
                "crosses_accurate": 0.0,
                "touches": 49.0385,
                "possession_lost": 6.4689,
                "dispossessed": 0.1245,
                "duels_lost": 3.9096,
                "aerial_lost": 1.9268,
                "total_contest": 0.0167,
                "won_contest": 0.0145,
                "ball_recovery": 2.9502,
                "challenges_lost": 0.4342,
                "fouls": 1.5019,
                "fouls_drawn": 0.3269,
                "blocks": 1.4101,
                "goals": 0.0999,
                "goal_rate": 0.0999,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.071,
                "expected_assists": 0.0072,
                "shots_on_target": 0.2667,
                "big_chances_created": 0.0368,
                "xgot": 0.0598,
                "ball_carries": 12.3114,
                "total_progression": 19.7066,
                "progressive_carries": 0.2906,
                "key_pass": 0.0517,
                "shots_off_target": 0.2344,
                "opponent_faced": "Bukayo Saka",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Bukayo Saka",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.9839,
                "tackles": 1.3318,
                "tackles_won": 0.7658,
                "clearances": 6.517,
                "aerial_won": 2.2773,
                "total_shots": 0.5011,
                "rating": 6.7891,
                "minutes": 77.3,
                "total_pass": 34.4631,
                "accurate_pass": 28.8846,
                "duels_won": 3.2142,
                "total_long_balls": 5.2249,
                "accurate_long_balls": 1.9497,
                "total_own_half_passes": 25.0684,
                "accurate_own_half_passes": 23.3129,
                "total_opp_half_passes": 9.3948,
                "accurate_opp_half_passes": 5.5715,
                "crosses_total": 0.4259,
                "crosses_accurate": 0.0,
                "touches": 49.0385,
                "possession_lost": 6.4689,
                "dispossessed": 0.1245,
                "duels_lost": 3.9096,
                "aerial_lost": 1.9268,
                "total_contest": 0.0167,
                "won_contest": 0.0145,
                "ball_recovery": 2.9502,
                "challenges_lost": 0.4342,
                "fouls": 1.5019,
                "fouls_drawn": 0.3269,
                "blocks": 1.4101,
                "goal_rate": 0.0999,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.071,
                "expected_assists": 0.0072,
                "shots_on_target": 0.2667,
                "big_chances_created": 0.0368,
                "xgot": 0.0598,
                "ball_carries": 12.3114,
                "total_progression": 19.7066,
                "progressive_carries": 0.2906,
                "key_pass": 0.0517,
                "shots_off_target": 0.2344,
                "opponent_faced": "Bukayo Saka",
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.9839,
                "tackles": 1.3318,
                "tackles_won": 0.7658,
                "clearances": 6.517,
                "aerial_won": 2.2773,
                "total_shots": 0.5011,
                "rating": 6.7891,
                "minutes": 77.3,
                "total_pass": 34.4631,
                "accurate_pass": 28.8846,
                "duels_won": 3.2142,
                "total_long_balls": 5.2249,
                "accurate_long_balls": 1.9497,
                "total_own_half_passes": 25.0684,
                "accurate_own_half_passes": 23.3129,
                "total_opp_half_passes": 9.3948,
                "accurate_opp_half_passes": 5.5715,
                "crosses_total": 0.4259,
                "crosses_accurate": 0.0,
                "touches": 49.0385,
                "possession_lost": 6.4689,
                "dispossessed": 0.1245,
                "duels_lost": 3.9096,
                "aerial_lost": 1.9268,
                "total_contest": 0.0167,
                "won_contest": 0.0145,
                "ball_recovery": 2.9502,
                "challenges_lost": 0.4342,
                "fouls": 1.5019,
                "fouls_drawn": 0.3269,
                "blocks": 1.4101,
                "goal_rate": 0.0999,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0793,
                "expected_assists": 0.0096,
                "shots_on_target": 0.2667,
                "big_chances_created": 0.0368,
                "xgot": 0.0668,
                "ball_carries": 12.3114,
                "total_progression": 19.7066,
                "progressive_carries": 0.2906,
                "key_pass": 0.0517,
                "shots_off_target": 0.2344,
                "opponent_faced": "Bukayo Saka",
                "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.2388,
                "creation_factor": 0.8741
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.071,
                  "after": 0.0793
                }
              ]
            },
            {
              "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": 0.9839,
                "tackles": 1.3318,
                "tackles_won": 0.7658,
                "clearances": 6.517,
                "aerial_won": 2.2773,
                "total_shots": 0.5011,
                "rating": 6.7891,
                "minutes": 77.3,
                "total_pass": 34.4631,
                "accurate_pass": 28.8846,
                "duels_won": 3.2142,
                "total_long_balls": 5.2249,
                "accurate_long_balls": 1.9497,
                "total_own_half_passes": 25.0684,
                "accurate_own_half_passes": 23.3129,
                "total_opp_half_passes": 9.3948,
                "accurate_opp_half_passes": 5.5715,
                "crosses_total": 0.4259,
                "crosses_accurate": 0.0,
                "touches": 49.0385,
                "possession_lost": 6.4689,
                "dispossessed": 0.1245,
                "duels_lost": 3.9096,
                "aerial_lost": 1.9268,
                "total_contest": 0.0167,
                "won_contest": 0.0145,
                "ball_recovery": 2.9502,
                "challenges_lost": 0.4342,
                "fouls": 1.5019,
                "fouls_drawn": 0.3269,
                "blocks": 1.4101,
                "goal_rate": 0.0999,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0793,
                "expected_assists": 0.0096,
                "shots_on_target": 0.2667,
                "big_chances_created": 0.0368,
                "xgot": 0.0668,
                "ball_carries": 12.3114,
                "total_progression": 19.7066,
                "progressive_carries": 0.2906,
                "key_pass": 0.0517,
                "shots_off_target": 0.2344,
                "opponent_faced": "Bukayo Saka",
                "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.2388,
                "creation_factor": 0.8741,
                "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": 3293,
                "fifa_rank": 2419.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.9839,
                "tackles": 1.3318,
                "tackles_won": 0.7658,
                "clearances": 6.517,
                "aerial_won": 2.2773,
                "total_shots": 0.5011,
                "rating": 6.7891,
                "minutes": 77.3,
                "total_pass": 34.4631,
                "accurate_pass": 28.8846,
                "duels_won": 3.2142,
                "total_long_balls": 5.2249,
                "accurate_long_balls": 1.9497,
                "total_own_half_passes": 25.0684,
                "accurate_own_half_passes": 23.3129,
                "total_opp_half_passes": 9.3948,
                "accurate_opp_half_passes": 5.5715,
                "crosses_total": 0.4259,
                "crosses_accurate": 0.0,
                "touches": 49.0385,
                "possession_lost": 6.4689,
                "dispossessed": 0.1245,
                "duels_lost": 3.9096,
                "aerial_lost": 1.9268,
                "total_contest": 0.0167,
                "won_contest": 0.0145,
                "ball_recovery": 2.9502,
                "challenges_lost": 0.4342,
                "fouls": 1.5019,
                "fouls_drawn": 0.3269,
                "blocks": 1.4101,
                "goal_rate": 0.0999,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0793,
                "expected_assists": 0.0096,
                "shots_on_target": 0.2667,
                "big_chances_created": 0.0368,
                "xgot": 0.0668,
                "ball_carries": 12.3114,
                "total_progression": 19.7066,
                "progressive_carries": 0.2906,
                "key_pass": 0.0517,
                "shots_off_target": 0.2344,
                "opponent_faced": "Bukayo Saka",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0762,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2388,
                "creation_factor": 0.8741,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0762,
                "goal_rate": 0.0999,
                "scorer_weight": 0.0982,
                "squad_weight_total": 0.8559,
                "weight_share": 0.1148,
                "finishing_factor": 1.2388,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.9839,
                "tackles": 1.3318,
                "tackles_won": 0.7658,
                "clearances": 6.517,
                "aerial_won": 2.2773,
                "total_shots": 0.5011,
                "rating": 6.7891,
                "minutes": 77.3,
                "total_pass": 34.4631,
                "accurate_pass": 28.8846,
                "duels_won": 3.2142,
                "total_long_balls": 5.2249,
                "accurate_long_balls": 1.9497,
                "total_own_half_passes": 25.0684,
                "accurate_own_half_passes": 23.3129,
                "total_opp_half_passes": 9.3948,
                "accurate_opp_half_passes": 5.5715,
                "crosses_total": 0.4259,
                "crosses_accurate": 0.0,
                "touches": 49.0385,
                "possession_lost": 6.4689,
                "dispossessed": 0.1245,
                "duels_lost": 3.9096,
                "aerial_lost": 1.9268,
                "total_contest": 0.0167,
                "won_contest": 0.0145,
                "ball_recovery": 2.9502,
                "challenges_lost": 0.4342,
                "fouls": 1.5019,
                "fouls_drawn": 0.3269,
                "blocks": 1.4101,
                "goal_rate": 0.0999,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0793,
                "expected_assists": 0.0096,
                "shots_on_target": 0.2667,
                "big_chances_created": 0.0368,
                "xgot": 0.0668,
                "ball_carries": 12.3114,
                "total_progression": 19.7066,
                "progressive_carries": 0.2906,
                "key_pass": 0.0517,
                "shots_off_target": 0.2344,
                "opponent_faced": "Bukayo Saka",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0762,
                "projected_assists": 0,
                "assist_probability": 0.0096,
                "finishing_factor": 1.2388,
                "creation_factor": 0.8741,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0096,
                "assist_rate": 0.0,
                "provider_weight": 0.0084,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0137,
                "creation_factor": 0.8741,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 14
              }
            }
          ]
        },
        "Ryan Giles": {
          "player_id": 931304,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 179,
          "market_value": 14500000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.5785,
            "minutes": 83,
            "total_pass": 20,
            "accurate_pass": 16,
            "duels_won": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 9,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 8,
            "crosses_total": 7,
            "crosses_accurate": 1,
            "touches": 40,
            "possession_lost": 13.6448,
            "dispossessed": 0.4927,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.1052,
            "assists": 0,
            "expected_goals": 0.0016,
            "expected_assists": 0.073,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 12,
            "total_progression": 51,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 0,
            "opponent_faced": "Declan Rice, Ben White",
            "matchup_zone": "RWB vs LW + LB",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0016,
            "projected_assists": 0,
            "assist_probability": 0.0704,
            "finishing_factor": 0.9728,
            "creation_factor": 1.25,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0349,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 28,
                "accurate_pass": 23,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 9,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 65,
                "rating": 5.8,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0192,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 11,
                "accurate_pass": 7,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 0,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 22,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "tackles": 1,
                "clearances": 2,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 64,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0037,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 18,
                "key_pass": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0833,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 19,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1694,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 11,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0414,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 15,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.075,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 85,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.021,
                "expected_assists": 0.0733,
                "total_shots": 1,
                "total_pass": 16,
                "accurate_pass": 11,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4101,
            "combined_rank_score": 2088.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 229.0,
            "sofascore_rating": 7.15,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3948.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5785,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ryan Giles",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kaine Kesler-Hayden",
                  "ranking": 4096
                },
                {
                  "player_name": "Luke Woolfenden",
                  "ranking": 4097
                },
                {
                  "player_name": "Adam Smith",
                  "ranking": 4098
                },
                {
                  "player_name": "Dayne St. Clair",
                  "ranking": 4099
                },
                {
                  "player_name": "Kieffer Moore",
                  "ranking": 4100
                }
              ],
              "lower": [
                {
                  "player_name": "Alex Tóth",
                  "ranking": 4102
                },
                {
                  "player_name": "Victor Torp",
                  "ranking": 4103
                },
                {
                  "player_name": "Dro Fernández",
                  "ranking": 4104
                },
                {
                  "player_name": "Agustín Sández",
                  "ranking": 4105
                },
                {
                  "player_name": "Axel Tuanzebe",
                  "ranking": 4106
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "history_matches": 9,
          "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": 9,
            "data_confidence": 0.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0074,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 174.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.52,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (D_service) evaluated 9 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.734,
                "tackles": 1.6414,
                "tackles_won": 1.0756,
                "clearances": 2.293,
                "aerial_won": 0.66,
                "total_shots": 0.389,
                "rating": 6.5785,
                "minutes": 83.13,
                "total_pass": 19.6296,
                "accurate_pass": 15.7392,
                "duels_won": 2.368,
                "total_long_balls": 2.6402,
                "accurate_long_balls": 1.3447,
                "total_own_half_passes": 9.2948,
                "accurate_own_half_passes": 7.9511,
                "total_opp_half_passes": 10.3347,
                "accurate_opp_half_passes": 7.788,
                "crosses_total": 6.6908,
                "crosses_accurate": 1.3061,
                "touches": 39.5081,
                "possession_lost": 13.5446,
                "dispossessed": 0.4891,
                "duels_lost": 2.5107,
                "aerial_lost": 0.499,
                "total_contest": 0.9929,
                "won_contest": 0.183,
                "ball_recovery": 3.7546,
                "challenges_lost": 0.3799,
                "fouls": 0.3328,
                "fouls_drawn": 0.1076,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1076,
                "assist_rate": 0.1076,
                "expected_goals": 0.0014,
                "expected_assists": 0.0543,
                "shots_on_target": 0.0,
                "big_chances_created": 0.3067,
                "xgot": 0.0,
                "ball_carries": 11.5526,
                "total_progression": 50.4135,
                "progressive_carries": 1.3446,
                "key_pass": 0.9443,
                "shots_off_target": 0.389
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.1659,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.141,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1199,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0736,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.0532,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.9706,
                  "aerialWon": 0.7093,
                  "totalClearance_p90": 2.9826,
                  "totalTackle": 1.2705,
                  "totalTackle_p90": 1.7734
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.7339974045753479,
                    "model_output": 0.734,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.1262
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0879
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0383
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0237
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0194
                        }
                      ],
                      "others": -0.0562,
                      "total": 0.734,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.156481
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.111483
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.047037
                        },
                        {
                          "name": "touches",
                          "margin": -0.030228
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.024852
                        }
                      ],
                      "others_margin": -0.073869
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.6414107084274292,
                    "model_output": 1.6414,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.194
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0811
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0622
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0544
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0461
                        }
                      ],
                      "others": -0.0595,
                      "total": 1.6414,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130844
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.050028
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.038145
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.033423
                        },
                        {
                          "name": "rating",
                          "margin": 0.027491
                        }
                      ],
                      "others_margin": -0.035588
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.0756086111068726,
                    "model_output": 1.0756,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1289
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0565
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0505
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0449
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0346
                        }
                      ],
                      "others": 0.013,
                      "total": 1.0756,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.141499
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.056181
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.050048
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.044649
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.033144
                        }
                      ],
                      "others_margin": 0.012075
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.29297137260437,
                    "model_output": 2.293,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.5178
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3935
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2937
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2599
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1235
                        }
                      ],
                      "others": -0.3213,
                      "total": 2.293,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.164403
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.127322
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.093453
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.09069
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.04614
                        }
                      ],
                      "others_margin": -0.131171
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.6600433588027954,
                    "model_output": 0.66,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.4001
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1178
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0781
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0717
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.056
                        }
                      ],
                      "others": -0.2216,
                      "total": 0.66,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.345472
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.114648
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.074529
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.073728
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.061551
                        }
                      ],
                      "others_margin": -0.289412
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3890027105808258,
                    "model_output": 0.389,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1121
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0409
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0227
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.014
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.0125
                        }
                      ],
                      "others": -0.0248,
                      "total": 0.389,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.112117
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.040948
                        },
                        {
                          "name": "rating",
                          "margin": -0.022712
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.014048
                        },
                        {
                          "name": "totalProgression",
                          "margin": 0.012466
                        }
                      ],
                      "others_margin": -0.024878
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.5784687995910645,
                    "model_output": 6.5785,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0519
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0262
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.022
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0196
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0178
                        }
                      ],
                      "others": -0.0828,
                      "total": 6.5785,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.051935
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.026248
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.022008
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.01963
                        },
                        {
                          "name": "rating",
                          "margin": -0.017781
                        }
                      ],
                      "others_margin": -0.082711
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 9,
                  "role_matches": 8,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0074, quality 0.574)",
              "stats": {
                "interceptions": 0.7394,
                "tackles": 1.6536,
                "tackles_won": 1.0836,
                "clearances": 2.3099,
                "aerial_won": 0.6649,
                "total_shots": 0.3919,
                "rating": 6.5785,
                "minutes": 83.13,
                "total_pass": 19.7749,
                "accurate_pass": 15.8557,
                "duels_won": 2.3855,
                "total_long_balls": 2.6597,
                "accurate_long_balls": 1.3547,
                "total_own_half_passes": 9.3636,
                "accurate_own_half_passes": 8.0099,
                "total_opp_half_passes": 10.4112,
                "accurate_opp_half_passes": 7.8456,
                "crosses_total": 6.7403,
                "crosses_accurate": 1.3158,
                "touches": 39.8005,
                "possession_lost": 13.6448,
                "dispossessed": 0.4927,
                "duels_lost": 2.5293,
                "aerial_lost": 0.5027,
                "total_contest": 1.0002,
                "won_contest": 0.1844,
                "ball_recovery": 3.7824,
                "challenges_lost": 0.3827,
                "fouls": 0.3353,
                "fouls_drawn": 0.1084,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1084,
                "assist_rate": 0.1084,
                "expected_goals": 0.0014,
                "expected_assists": 0.0547,
                "shots_on_target": 0.0,
                "big_chances_created": 0.309,
                "xgot": 0.0,
                "ball_carries": 11.6381,
                "total_progression": 50.7866,
                "progressive_carries": 1.3546,
                "key_pass": 0.9513,
                "shots_off_target": 0.3919
              },
              "params": {
                "market_value_eur": 14500000,
                "quality_factor": 0.5737,
                "boost_factor": 1.0074,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0294)",
              "stats": {
                "interceptions": 0.732,
                "tackles": 1.6536,
                "tackles_won": 1.0803,
                "clearances": 2.3099,
                "aerial_won": 0.6649,
                "total_shots": 0.3945,
                "rating": 6.5785,
                "minutes": 83.13,
                "total_pass": 19.7749,
                "accurate_pass": 15.8557,
                "duels_won": 2.3855,
                "total_long_balls": 2.6597,
                "accurate_long_balls": 1.3547,
                "total_own_half_passes": 9.3636,
                "accurate_own_half_passes": 8.0099,
                "total_opp_half_passes": 10.4112,
                "accurate_opp_half_passes": 7.8456,
                "crosses_total": 6.7279,
                "crosses_accurate": 1.3158,
                "touches": 39.8005,
                "possession_lost": 13.6448,
                "dispossessed": 0.4927,
                "duels_lost": 2.5293,
                "aerial_lost": 0.5027,
                "total_contest": 1.0002,
                "won_contest": 0.1844,
                "ball_recovery": 3.7824,
                "challenges_lost": 0.3827,
                "fouls": 0.3254,
                "fouls_drawn": 0.1052,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1052,
                "assist_rate": 0.1052,
                "expected_goals": 0.0014,
                "expected_assists": 0.0547,
                "shots_on_target": 0.0,
                "big_chances_created": 0.309,
                "xgot": 0.0,
                "ball_carries": 11.6381,
                "total_progression": 50.7866,
                "progressive_carries": 1.3546,
                "key_pass": 0.9513,
                "shots_off_target": 0.3919
              },
              "params": {
                "blend_weight": 0.0294,
                "history_matches": 9,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9237,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 6.7403,
                  "after": 6.7279
                },
                {
                  "stat": "fouls",
                  "before": 0.3353,
                  "after": 0.3254
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.7394,
                  "after": 0.732
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.732,
                "tackles": 1.6536,
                "tackles_won": 1.0803,
                "clearances": 2.3099,
                "aerial_won": 0.6649,
                "total_shots": 0.3945,
                "rating": 6.5785,
                "minutes": 83.13,
                "total_pass": 19.7749,
                "accurate_pass": 15.8557,
                "duels_won": 2.3855,
                "total_long_balls": 2.6597,
                "accurate_long_balls": 1.3547,
                "total_own_half_passes": 9.3636,
                "accurate_own_half_passes": 8.0099,
                "total_opp_half_passes": 10.4112,
                "accurate_opp_half_passes": 7.8456,
                "crosses_total": 6.7279,
                "crosses_accurate": 1.3158,
                "touches": 39.8005,
                "possession_lost": 13.6448,
                "dispossessed": 0.4927,
                "duels_lost": 2.5293,
                "aerial_lost": 0.5027,
                "total_contest": 1.0002,
                "won_contest": 0.1844,
                "ball_recovery": 3.7824,
                "challenges_lost": 0.3827,
                "fouls": 0.3254,
                "fouls_drawn": 0.1052,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1052,
                "assist_rate": 0.1052,
                "expected_goals": 0.0014,
                "expected_assists": 0.0547,
                "shots_on_target": 0.0,
                "big_chances_created": 0.309,
                "xgot": 0.0,
                "ball_carries": 11.6381,
                "total_progression": 50.7866,
                "progressive_carries": 1.3546,
                "key_pass": 0.9513,
                "shots_off_target": 0.3919
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 0.732,
                "tackles": 1.6536,
                "tackles_won": 1.0803,
                "clearances": 2.3099,
                "aerial_won": 0.6649,
                "total_shots": 0.3945,
                "rating": 6.5785,
                "minutes": 83.13,
                "total_pass": 19.7749,
                "accurate_pass": 15.8557,
                "duels_won": 2.3855,
                "total_long_balls": 2.6597,
                "accurate_long_balls": 1.3547,
                "total_own_half_passes": 9.3636,
                "accurate_own_half_passes": 8.0099,
                "total_opp_half_passes": 10.4112,
                "accurate_opp_half_passes": 7.8456,
                "crosses_total": 6.7279,
                "crosses_accurate": 1.3158,
                "touches": 39.8005,
                "possession_lost": 13.6448,
                "dispossessed": 0.4927,
                "duels_lost": 2.5293,
                "aerial_lost": 0.5027,
                "total_contest": 1.0002,
                "won_contest": 0.1844,
                "ball_recovery": 3.7824,
                "challenges_lost": 0.3827,
                "fouls": 0.3254,
                "fouls_drawn": 0.1052,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1052,
                "assist_rate": 0.1052,
                "expected_goals": 0.0014,
                "expected_assists": 0.0547,
                "shots_on_target": 0.0,
                "big_chances_created": 0.309,
                "xgot": 0.0,
                "ball_carries": 11.6381,
                "total_progression": 50.7866,
                "progressive_carries": 1.3546,
                "key_pass": 0.9513,
                "shots_off_target": 0.3919,
                "opponent_faced": "Declan Rice, Ben White",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Declan Rice, Ben White",
                  "matchup_zone": "RWB vs LW + LB"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.732,
                "tackles": 1.6536,
                "tackles_won": 1.0803,
                "clearances": 2.3099,
                "aerial_won": 0.6649,
                "total_shots": 0.3945,
                "rating": 6.5785,
                "minutes": 83.13,
                "total_pass": 19.7749,
                "accurate_pass": 15.8557,
                "duels_won": 2.3855,
                "total_long_balls": 2.6597,
                "accurate_long_balls": 1.3547,
                "total_own_half_passes": 9.3636,
                "accurate_own_half_passes": 8.0099,
                "total_opp_half_passes": 10.4112,
                "accurate_opp_half_passes": 7.8456,
                "crosses_total": 6.7279,
                "crosses_accurate": 1.3158,
                "touches": 39.8005,
                "possession_lost": 13.6448,
                "dispossessed": 0.4927,
                "duels_lost": 2.5293,
                "aerial_lost": 0.5027,
                "total_contest": 1.0002,
                "won_contest": 0.1844,
                "ball_recovery": 3.7824,
                "challenges_lost": 0.3827,
                "fouls": 0.3254,
                "fouls_drawn": 0.1052,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1052,
                "assists": 0,
                "expected_goals": 0.0014,
                "expected_assists": 0.0547,
                "shots_on_target": 0.0,
                "big_chances_created": 0.309,
                "xgot": 0.0,
                "ball_carries": 11.6381,
                "total_progression": 50.7866,
                "progressive_carries": 1.3546,
                "key_pass": 0.9513,
                "shots_off_target": 0.3919,
                "opponent_faced": "Declan Rice, Ben White",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.732,
                "tackles": 1.6536,
                "tackles_won": 1.0803,
                "clearances": 2.3099,
                "aerial_won": 0.6649,
                "total_shots": 0.3945,
                "rating": 6.5785,
                "minutes": 83.13,
                "total_pass": 19.7749,
                "accurate_pass": 15.8557,
                "duels_won": 2.3855,
                "total_long_balls": 2.6597,
                "accurate_long_balls": 1.3547,
                "total_own_half_passes": 9.3636,
                "accurate_own_half_passes": 8.0099,
                "total_opp_half_passes": 10.4112,
                "accurate_opp_half_passes": 7.8456,
                "crosses_total": 6.7279,
                "crosses_accurate": 1.3158,
                "touches": 39.8005,
                "possession_lost": 13.6448,
                "dispossessed": 0.4927,
                "duels_lost": 2.5293,
                "aerial_lost": 0.5027,
                "total_contest": 1.0002,
                "won_contest": 0.1844,
                "ball_recovery": 3.7824,
                "challenges_lost": 0.3827,
                "fouls": 0.3254,
                "fouls_drawn": 0.1052,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1052,
                "assists": 0,
                "expected_goals": 0.0016,
                "expected_assists": 0.073,
                "shots_on_target": 0.0,
                "big_chances_created": 0.309,
                "xgot": 0.0,
                "ball_carries": 11.6381,
                "total_progression": 50.7866,
                "progressive_carries": 1.3546,
                "key_pass": 0.9513,
                "shots_off_target": 0.3919,
                "opponent_faced": "Declan Rice, Ben White",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9728,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0547,
                  "after": 0.073
                }
              ]
            },
            {
              "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": {
                "interceptions": 0.732,
                "tackles": 1.6536,
                "tackles_won": 1.0803,
                "clearances": 2.3099,
                "aerial_won": 0.6649,
                "total_shots": 0.3945,
                "rating": 6.5785,
                "minutes": 83.13,
                "total_pass": 19.7749,
                "accurate_pass": 15.8557,
                "duels_won": 2.3855,
                "total_long_balls": 2.6597,
                "accurate_long_balls": 1.3547,
                "total_own_half_passes": 9.3636,
                "accurate_own_half_passes": 8.0099,
                "total_opp_half_passes": 10.4112,
                "accurate_opp_half_passes": 7.8456,
                "crosses_total": 6.7279,
                "crosses_accurate": 1.3158,
                "touches": 39.8005,
                "possession_lost": 13.6448,
                "dispossessed": 0.4927,
                "duels_lost": 2.5293,
                "aerial_lost": 0.5027,
                "total_contest": 1.0002,
                "won_contest": 0.1844,
                "ball_recovery": 3.7824,
                "challenges_lost": 0.3827,
                "fouls": 0.3254,
                "fouls_drawn": 0.1052,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1052,
                "assists": 0,
                "expected_goals": 0.0016,
                "expected_assists": 0.073,
                "shots_on_target": 0.0,
                "big_chances_created": 0.309,
                "xgot": 0.0,
                "ball_carries": 11.6381,
                "total_progression": 50.7866,
                "progressive_carries": 1.3546,
                "key_pass": 0.9513,
                "shots_off_target": 0.3919,
                "opponent_faced": "Declan Rice, Ben White",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9728,
                "creation_factor": 1.25,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4101,
                "fifa_rank": 3948.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.732,
                "tackles": 1.6536,
                "tackles_won": 1.0803,
                "clearances": 2.3099,
                "aerial_won": 0.6649,
                "total_shots": 0.3945,
                "rating": 6.5785,
                "minutes": 83.13,
                "total_pass": 19.7749,
                "accurate_pass": 15.8557,
                "duels_won": 2.3855,
                "total_long_balls": 2.6597,
                "accurate_long_balls": 1.3547,
                "total_own_half_passes": 9.3636,
                "accurate_own_half_passes": 8.0099,
                "total_opp_half_passes": 10.4112,
                "accurate_opp_half_passes": 7.8456,
                "crosses_total": 6.7279,
                "crosses_accurate": 1.3158,
                "touches": 39.8005,
                "possession_lost": 13.6448,
                "dispossessed": 0.4927,
                "duels_lost": 2.5293,
                "aerial_lost": 0.5027,
                "total_contest": 1.0002,
                "won_contest": 0.1844,
                "ball_recovery": 3.7824,
                "challenges_lost": 0.3827,
                "fouls": 0.3254,
                "fouls_drawn": 0.1052,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1052,
                "assists": 0,
                "expected_goals": 0.0016,
                "expected_assists": 0.073,
                "shots_on_target": 0.0,
                "big_chances_created": 0.309,
                "xgot": 0.0,
                "ball_carries": 11.6381,
                "total_progression": 50.7866,
                "progressive_carries": 1.3546,
                "key_pass": 0.9513,
                "shots_off_target": 0.3919,
                "opponent_faced": "Declan Rice, Ben White",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0016,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9728,
                "creation_factor": 1.25,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0016,
                "goal_rate": 0.0,
                "scorer_weight": 0.0016,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0018,
                "finishing_factor": 0.9728,
                "appearance_weight": 1.0,
                "weight_rank": 13,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.732,
                "tackles": 1.6536,
                "tackles_won": 1.0803,
                "clearances": 2.3099,
                "aerial_won": 0.6649,
                "total_shots": 0.3945,
                "rating": 6.5785,
                "minutes": 83.13,
                "total_pass": 19.7749,
                "accurate_pass": 15.8557,
                "duels_won": 2.3855,
                "total_long_balls": 2.6597,
                "accurate_long_balls": 1.3547,
                "total_own_half_passes": 9.3636,
                "accurate_own_half_passes": 8.0099,
                "total_opp_half_passes": 10.4112,
                "accurate_opp_half_passes": 7.8456,
                "crosses_total": 6.7279,
                "crosses_accurate": 1.3158,
                "touches": 39.8005,
                "possession_lost": 13.6448,
                "dispossessed": 0.4927,
                "duels_lost": 2.5293,
                "aerial_lost": 0.5027,
                "total_contest": 1.0002,
                "won_contest": 0.1844,
                "ball_recovery": 3.7824,
                "challenges_lost": 0.3827,
                "fouls": 0.3254,
                "fouls_drawn": 0.1052,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1052,
                "assists": 0,
                "expected_goals": 0.0016,
                "expected_assists": 0.073,
                "shots_on_target": 0.0,
                "big_chances_created": 0.309,
                "xgot": 0.0,
                "ball_carries": 11.6381,
                "total_progression": 50.7866,
                "progressive_carries": 1.3546,
                "key_pass": 0.9513,
                "shots_off_target": 0.3919,
                "opponent_faced": "Declan Rice, Ben White",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0016,
                "projected_assists": 0,
                "assist_probability": 0.0704,
                "finishing_factor": 0.9728,
                "creation_factor": 1.25,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0704,
                "assist_rate": 0.1052,
                "provider_weight": 0.0912,
                "squad_weight_total": 0.6106,
                "weight_share": 0.1494,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 14
              }
            }
          ]
        },
        "Regan Slater": {
          "player_id": 864474,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 27,
          "height": 173,
          "market_value": 9200000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0934,
            "assist_rate": 0.0915,
            "assists": 0,
            "expected_goals": 0.0582,
            "goal_rate": 0.0508,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8155,
            "minutes": 85,
            "total_pass": 27,
            "accurate_pass": 22,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 12,
            "accurate_own_half_passes": 11,
            "total_opp_half_passes": 15,
            "accurate_opp_half_passes": 11,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 38,
            "possession_lost": 7.2216,
            "dispossessed": 0.2179,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0046,
            "ball_carries": 8,
            "total_progression": 16,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.7273,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.7,
            "crosses_attempted": 2.2,
            "duel_win_rate": 0.275,
            "pressing_faced": "ULTRA_HIGH",
            "matchup_zone": "Left Mid vs Right Back — Wide Channel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Myles Lewis-Skelly",
            "opponent_faced": "Myles Lewis-Skelly",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0565,
            "projected_assists": 0,
            "assist_probability": 0.0892,
            "finishing_factor": 0.9873,
            "creation_factor": 1.1792,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 89,
                "rating": 6.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0144,
                "expected_assists": 0.1024,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 25,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 3,
                "ball_recovery": 3,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0536,
                "expected_assists": 0.0644,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 41,
                "accurate_pass": 33,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 0,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 75,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0396,
                "expected_assists": 0.0011,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 8,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 75,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0235,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 25,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 78,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1317,
                "expected_assists": 0.0319,
                "total_shots": 1,
                "total_pass": 29,
                "accurate_pass": 25,
                "key_pass": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0418,
                "expected_assists": 0.1042,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0403,
                "expected_assists": 0.0148,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0063,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 20,
                "tackles": 4,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.4411,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4157,
            "combined_rank_score": 2168.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 391.0,
            "sofascore_rating": 6.95,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3946.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8155,
            "source_file": "data/player_rankings.csv",
            "player_name": "Regan Slater",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ousseynou Niang",
                  "ranking": 4152
                },
                {
                  "player_name": "Joris Kayembe",
                  "ranking": 4153
                },
                {
                  "player_name": "Mujaid",
                  "ranking": 4154
                },
                {
                  "player_name": "Adriano Bertaccini",
                  "ranking": 4155
                },
                {
                  "player_name": "Matthieu Epolo",
                  "ranking": 4156
                }
              ],
              "lower": [
                {
                  "player_name": "Abdelkahar Kadri",
                  "ranking": 4158
                },
                {
                  "player_name": "Arsen Zakharyan",
                  "ranking": 4159
                },
                {
                  "player_name": "Nicolò Tresoldi",
                  "ranking": 4160
                },
                {
                  "player_name": "Santiago Arias",
                  "ranking": 4161
                },
                {
                  "player_name": "Carlos Forbs",
                  "ranking": 4162
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 9,
          "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": 9,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0009,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.5,
              "shots_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 9 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.13, gls/90: 0.0, ast/90: 0.5)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.8211,
                "expected_assists": 0.0699,
                "assists": 0.0793,
                "assist_rate": 0.0793,
                "expected_goals": 0.0717,
                "goals": 0.072,
                "goal_rate": 0.072,
                "shots_on_target": 0.3056,
                "total_shots": 1.0377,
                "rating": 6.8155,
                "minutes": 84.91,
                "total_pass": 26.9111,
                "accurate_pass": 21.8281,
                "duels_won": 4.2093,
                "total_long_balls": 1.5865,
                "accurate_long_balls": 0.7966,
                "total_own_half_passes": 12.083,
                "accurate_own_half_passes": 11.0243,
                "total_opp_half_passes": 14.8282,
                "accurate_opp_half_passes": 10.804,
                "crosses_total": 1.1492,
                "crosses_accurate": 0.7494,
                "touches": 37.5114,
                "possession_lost": 7.2151,
                "dispossessed": 0.2177,
                "duels_lost": 2.7959,
                "aerial_won": 0.92,
                "aerial_lost": 0.4476,
                "interceptions": 0.4557,
                "tackles_won": 0.9224,
                "tackles": 2.0092,
                "clearances": 1.2681,
                "total_contest": 0.9259,
                "won_contest": 0.76,
                "challenges_lost": 1.2871,
                "fouls": 0.6776,
                "fouls_drawn": 0.5202,
                "blocks": 0.0,
                "big_chances_created": 0.1398,
                "big_chances_missed": 0.0,
                "xgot": 0.0057,
                "ball_carries": 8.3385,
                "total_progression": 15.584,
                "progressive_carries": 0.1268,
                "shots_off_target": 0.7321
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1659,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.141,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1199,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0736,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0532,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.0039,
                  "creative_index": 0.3885,
                  "expectedGoals": 0.0373,
                  "expectedAssists": 0.0709,
                  "keyPass": 0.865
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8210802674293518,
                    "model_output": 0.8211,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1394
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0509
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0464
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0431
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0395
                        }
                      ],
                      "others": -0.1304,
                      "total": 0.8211,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.145456
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.048215
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.043877
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.042561
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.040623
                        }
                      ],
                      "others_margin": -0.147447
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06994326412677765,
                    "model_output": 0.0699,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0126
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0114
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0082
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0056
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0042
                        }
                      ],
                      "others": -0.0228,
                      "total": 0.0699,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.138625
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.124577
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.091428
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.06179
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.04614
                        }
                      ],
                      "others_margin": -0.280973
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07932355254888535,
                    "model_output": 0.0793,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0081
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0077
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0073
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0053
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0053
                        }
                      ],
                      "others": -0.0241,
                      "total": 0.0793,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.09096
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.086303
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.081569
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.05534
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.052946
                        }
                      ],
                      "others_margin": -0.26526
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07167413085699081,
                    "model_output": 0.0717,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0117
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0109
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0101
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0032
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0036,
                      "total": 0.0717,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.136004
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.127595
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.117175
                        },
                        {
                          "name": "goals",
                          "margin": -0.040418
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.030935
                        }
                      ],
                      "others_margin": -0.050726
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07199697196483612,
                    "model_output": 0.072,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0132
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0117
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0077
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0061
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0044
                        }
                      ],
                      "others": -0.0117,
                      "total": 0.072,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.150493
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.134762
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.086357
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.073982
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.054119
                        }
                      ],
                      "others_margin": -0.150795
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.30556175112724304,
                    "model_output": 0.3056,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.047
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0435
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0186
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0185
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0177
                        }
                      ],
                      "others": -0.0266,
                      "total": 0.3056,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.159931
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.148956
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.057333
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.057316
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.054649
                        }
                      ],
                      "others_margin": -0.083206
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.0376553535461426,
                    "model_output": 1.0377,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.156
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0567
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0315
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0246
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0181
                        }
                      ],
                      "others": -0.0845,
                      "total": 1.0377,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.155971
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.056698
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.031457
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.024567
                        },
                        {
                          "name": "goals",
                          "margin": -0.018125
                        }
                      ],
                      "others_margin": -0.084452
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.815450668334961,
                    "model_output": 6.8155,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0299
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0275
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0137
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0129
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0101
                        }
                      ],
                      "others": -0.0077,
                      "total": 6.8154,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.029928
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.027484
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.013691
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.012891
                        },
                        {
                          "name": "rating",
                          "margin": -0.010104
                        }
                      ],
                      "others_margin": -0.007714
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 9,
                  "role_matches": 9,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0009, quality 0.513)",
              "stats": {
                "key_pass": 0.8218,
                "expected_assists": 0.07,
                "assists": 0.0794,
                "assist_rate": 0.0794,
                "expected_goals": 0.0717,
                "goals": 0.0721,
                "goal_rate": 0.0721,
                "shots_on_target": 0.3058,
                "total_shots": 1.0386,
                "rating": 6.8155,
                "minutes": 84.91,
                "total_pass": 26.9353,
                "accurate_pass": 21.8477,
                "duels_won": 4.2131,
                "total_long_balls": 1.5879,
                "accurate_long_balls": 0.7973,
                "total_own_half_passes": 12.0939,
                "accurate_own_half_passes": 11.0342,
                "total_opp_half_passes": 14.8415,
                "accurate_opp_half_passes": 10.8137,
                "crosses_total": 1.1502,
                "crosses_accurate": 0.7501,
                "touches": 37.5452,
                "possession_lost": 7.2216,
                "dispossessed": 0.2179,
                "duels_lost": 2.7984,
                "aerial_won": 0.9208,
                "aerial_lost": 0.448,
                "interceptions": 0.4561,
                "tackles_won": 0.9232,
                "tackles": 2.011,
                "clearances": 1.2692,
                "total_contest": 0.9267,
                "won_contest": 0.7607,
                "challenges_lost": 1.2883,
                "fouls": 0.6782,
                "fouls_drawn": 0.5207,
                "blocks": 0.0,
                "big_chances_created": 0.1399,
                "big_chances_missed": 0.0,
                "xgot": 0.0057,
                "ball_carries": 8.346,
                "total_progression": 15.598,
                "progressive_carries": 0.1269,
                "shots_off_target": 0.7328
              },
              "params": {
                "market_value_eur": 9200000,
                "quality_factor": 0.513,
                "boost_factor": 1.0009,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0309)",
              "stats": {
                "key_pass": 0.8218,
                "expected_assists": 0.07,
                "assists": 0.0915,
                "assist_rate": 0.0915,
                "expected_goals": 0.0717,
                "goals": 0.0699,
                "goal_rate": 0.0699,
                "shots_on_target": 0.2963,
                "total_shots": 1.0065,
                "rating": 6.8155,
                "minutes": 84.91,
                "total_pass": 26.9353,
                "accurate_pass": 21.8477,
                "duels_won": 4.2131,
                "total_long_balls": 1.5879,
                "accurate_long_balls": 0.7973,
                "total_own_half_passes": 12.0939,
                "accurate_own_half_passes": 11.0342,
                "total_opp_half_passes": 14.8415,
                "accurate_opp_half_passes": 10.8137,
                "crosses_total": 1.1438,
                "crosses_accurate": 0.7501,
                "touches": 37.5452,
                "possession_lost": 7.2216,
                "dispossessed": 0.2179,
                "duels_lost": 2.7984,
                "aerial_won": 0.9208,
                "aerial_lost": 0.448,
                "interceptions": 0.442,
                "tackles_won": 0.9238,
                "tackles": 2.011,
                "clearances": 1.2692,
                "total_contest": 0.9267,
                "won_contest": 0.7607,
                "challenges_lost": 1.2883,
                "fouls": 0.701,
                "fouls_drawn": 0.5192,
                "blocks": 0.0,
                "big_chances_created": 0.1399,
                "big_chances_missed": 0.0,
                "xgot": 0.0057,
                "ball_carries": 8.346,
                "total_progression": 15.598,
                "progressive_carries": 0.1269,
                "shots_off_target": 0.7328
              },
              "params": {
                "blend_weight": 0.0309,
                "history_matches": 9,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9434,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.0386,
                  "after": 1.0065
                },
                {
                  "stat": "fouls",
                  "before": 0.6782,
                  "after": 0.701
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.4561,
                  "after": 0.442
                },
                {
                  "stat": "goalAssist",
                  "before": 0.0794,
                  "after": 0.0915
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3058,
                  "after": 0.2963
                },
                {
                  "stat": "totalCross",
                  "before": 1.1502,
                  "after": 1.1438
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.8218,
                "expected_assists": 0.07,
                "assists": 0.0915,
                "assist_rate": 0.0915,
                "expected_goals": 0.0717,
                "goals": 0.0699,
                "goal_rate": 0.0699,
                "shots_on_target": 0.2963,
                "total_shots": 1.0291,
                "rating": 6.8155,
                "minutes": 84.91,
                "total_pass": 26.9353,
                "accurate_pass": 21.8477,
                "duels_won": 4.2131,
                "total_long_balls": 1.5879,
                "accurate_long_balls": 0.7973,
                "total_own_half_passes": 12.0939,
                "accurate_own_half_passes": 11.0342,
                "total_opp_half_passes": 14.8415,
                "accurate_opp_half_passes": 10.8137,
                "crosses_total": 1.1438,
                "crosses_accurate": 0.7501,
                "touches": 37.5452,
                "possession_lost": 7.2216,
                "dispossessed": 0.2179,
                "duels_lost": 2.7984,
                "aerial_won": 0.9208,
                "aerial_lost": 0.448,
                "interceptions": 0.442,
                "tackles_won": 0.9238,
                "tackles": 2.011,
                "clearances": 1.2692,
                "total_contest": 0.9267,
                "won_contest": 0.7607,
                "challenges_lost": 1.2883,
                "fouls": 0.701,
                "fouls_drawn": 0.5192,
                "blocks": 0.0,
                "big_chances_created": 0.1399,
                "big_chances_missed": 0.0,
                "xgot": 0.0057,
                "ball_carries": 8.346,
                "total_progression": 15.598,
                "progressive_carries": 0.1269,
                "shots_off_target": 0.7328
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "key_pass": 0.8218,
                "expected_assists": 0.07,
                "assists": 0.0915,
                "assist_rate": 0.0915,
                "expected_goals": 0.0521,
                "goals": 0.0508,
                "goal_rate": 0.0508,
                "shots_on_target": 0.2155,
                "total_shots": 0.7485,
                "rating": 6.8155,
                "minutes": 84.91,
                "total_pass": 26.9353,
                "accurate_pass": 21.8477,
                "duels_won": 4.2131,
                "total_long_balls": 1.5879,
                "accurate_long_balls": 0.7973,
                "total_own_half_passes": 12.0939,
                "accurate_own_half_passes": 11.0342,
                "total_opp_half_passes": 14.8415,
                "accurate_opp_half_passes": 10.8137,
                "crosses_total": 1.1438,
                "crosses_accurate": 0.7501,
                "touches": 37.5452,
                "possession_lost": 7.2216,
                "dispossessed": 0.2179,
                "duels_lost": 2.7984,
                "aerial_won": 0.9,
                "aerial_lost": 0.448,
                "interceptions": 0.442,
                "tackles_won": 0.9238,
                "tackles": 2.011,
                "clearances": 1.2692,
                "total_contest": 0.9267,
                "won_contest": 0.7607,
                "challenges_lost": 1.2883,
                "fouls": 0.701,
                "fouls_drawn": 0.5192,
                "blocks": 0.0,
                "big_chances_created": 0.1399,
                "big_chances_missed": 0.0,
                "xgot": 0.0041,
                "ball_carries": 8.346,
                "total_progression": 15.598,
                "progressive_carries": 0.1269,
                "shots_off_target": 0.533,
                "duel_xg_multiplier": 0.7273,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.275,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Myles Lewis-Skelly",
                "opponent_faced": "Myles Lewis-Skelly",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Myles Lewis-Skelly",
                  "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                  "duel_win_rate": 0.275,
                  "pressing_faced": "ULTRA_HIGH",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.7273,
                  "skill_edge": -0.1655,
                  "height_edge": -0.02,
                  "attacker_skill": 0.5251,
                  "defender_skill": 0.8928,
                  "attacker_role": "LM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Myles Lewis-Skelly",
                      "market_value": 69000000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.8928
                    }
                  ],
                  "xg_override": 0.0521
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.0291,
                  "after": 0.7485
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.7328,
                  "after": 0.533
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2963,
                  "after": 0.2155
                },
                {
                  "stat": "aerialWon",
                  "before": 0.9208,
                  "after": 0.9
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0717,
                  "after": 0.0521
                },
                {
                  "stat": "goals",
                  "before": 0.0699,
                  "after": 0.0508
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.8218,
                "expected_assists": 0.07,
                "assist_rate": 0.0915,
                "assists": 0,
                "expected_goals": 0.0521,
                "goal_rate": 0.0508,
                "goals": 0,
                "shots_on_target": 0.2155,
                "total_shots": 0.7485,
                "rating": 6.8155,
                "minutes": 84.91,
                "total_pass": 26.9353,
                "accurate_pass": 21.8477,
                "duels_won": 4.2131,
                "total_long_balls": 1.5879,
                "accurate_long_balls": 0.7973,
                "total_own_half_passes": 12.0939,
                "accurate_own_half_passes": 11.0342,
                "total_opp_half_passes": 14.8415,
                "accurate_opp_half_passes": 10.8137,
                "crosses_total": 1.1438,
                "crosses_accurate": 0.7501,
                "touches": 37.5452,
                "possession_lost": 7.2216,
                "dispossessed": 0.2179,
                "duels_lost": 2.7984,
                "aerial_won": 0.9,
                "aerial_lost": 0.448,
                "interceptions": 0.442,
                "tackles_won": 0.9238,
                "tackles": 2.011,
                "clearances": 1.2692,
                "total_contest": 0.9267,
                "won_contest": 0.7607,
                "challenges_lost": 1.2883,
                "fouls": 0.701,
                "fouls_drawn": 0.5192,
                "blocks": 0.0,
                "big_chances_created": 0.1399,
                "big_chances_missed": 0.0,
                "xgot": 0.0041,
                "ball_carries": 8.346,
                "total_progression": 15.598,
                "progressive_carries": 0.1269,
                "shots_off_target": 0.533,
                "duel_xg_multiplier": 0.7273,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.275,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Myles Lewis-Skelly",
                "opponent_faced": "Myles Lewis-Skelly",
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.8218,
                "expected_assists": 0.0934,
                "assist_rate": 0.0915,
                "assists": 0,
                "expected_goals": 0.0582,
                "goal_rate": 0.0508,
                "goals": 0,
                "shots_on_target": 0.2155,
                "total_shots": 0.7485,
                "rating": 6.8155,
                "minutes": 84.91,
                "total_pass": 26.9353,
                "accurate_pass": 21.8477,
                "duels_won": 4.2131,
                "total_long_balls": 1.5879,
                "accurate_long_balls": 0.7973,
                "total_own_half_passes": 12.0939,
                "accurate_own_half_passes": 11.0342,
                "total_opp_half_passes": 14.8415,
                "accurate_opp_half_passes": 10.8137,
                "crosses_total": 1.1438,
                "crosses_accurate": 0.7501,
                "touches": 37.5452,
                "possession_lost": 7.2216,
                "dispossessed": 0.2179,
                "duels_lost": 2.7984,
                "aerial_won": 0.9,
                "aerial_lost": 0.448,
                "interceptions": 0.442,
                "tackles_won": 0.9238,
                "tackles": 2.011,
                "clearances": 1.2692,
                "total_contest": 0.9267,
                "won_contest": 0.7607,
                "challenges_lost": 1.2883,
                "fouls": 0.701,
                "fouls_drawn": 0.5192,
                "blocks": 0.0,
                "big_chances_created": 0.1399,
                "big_chances_missed": 0.0,
                "xgot": 0.0046,
                "ball_carries": 8.346,
                "total_progression": 15.598,
                "progressive_carries": 0.1269,
                "shots_off_target": 0.533,
                "duel_xg_multiplier": 0.7273,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.275,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Myles Lewis-Skelly",
                "opponent_faced": "Myles Lewis-Skelly",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9873,
                "creation_factor": 1.1792
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0521,
                  "after": 0.0582
                },
                {
                  "stat": "expected_assists",
                  "before": 0.07,
                  "after": 0.0934
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 72.0)",
              "stats": {
                "key_pass": 0.8218,
                "expected_assists": 0.0934,
                "assist_rate": 0.0915,
                "assists": 0,
                "expected_goals": 0.0582,
                "goal_rate": 0.0508,
                "goals": 0,
                "shots_on_target": 0.2155,
                "total_shots": 0.7485,
                "rating": 6.8155,
                "minutes": 84.91,
                "total_pass": 26.9353,
                "accurate_pass": 21.8477,
                "duels_won": 4.2131,
                "total_long_balls": 1.5879,
                "accurate_long_balls": 0.7973,
                "total_own_half_passes": 12.0939,
                "accurate_own_half_passes": 11.0342,
                "total_opp_half_passes": 14.8415,
                "accurate_opp_half_passes": 10.8137,
                "crosses_total": 1.1438,
                "crosses_accurate": 0.7501,
                "touches": 37.5452,
                "possession_lost": 7.2216,
                "dispossessed": 0.2179,
                "duels_lost": 2.7984,
                "aerial_won": 0.9,
                "aerial_lost": 0.448,
                "interceptions": 0.442,
                "tackles_won": 0.9238,
                "tackles": 2.011,
                "clearances": 1.2692,
                "total_contest": 0.9267,
                "won_contest": 0.7607,
                "challenges_lost": 1.2883,
                "fouls": 0.701,
                "fouls_drawn": 0.5192,
                "blocks": 0.0,
                "big_chances_created": 0.1399,
                "big_chances_missed": 0.0,
                "xgot": 0.0046,
                "ball_carries": 8.346,
                "total_progression": 15.598,
                "progressive_carries": 0.1269,
                "shots_off_target": 0.533,
                "duel_xg_multiplier": 0.7273,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.275,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Myles Lewis-Skelly",
                "opponent_faced": "Myles Lewis-Skelly",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9873,
                "creation_factor": 1.1792,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 6,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4157,
                "fifa_rank": 3946.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.8218,
                "expected_assists": 0.0934,
                "assist_rate": 0.0915,
                "assists": 0,
                "expected_goals": 0.0582,
                "goal_rate": 0.0508,
                "goals": 0,
                "shots_on_target": 0.2155,
                "total_shots": 0.7485,
                "rating": 6.8155,
                "minutes": 84.91,
                "total_pass": 26.9353,
                "accurate_pass": 21.8477,
                "duels_won": 4.2131,
                "total_long_balls": 1.5879,
                "accurate_long_balls": 0.7973,
                "total_own_half_passes": 12.0939,
                "accurate_own_half_passes": 11.0342,
                "total_opp_half_passes": 14.8415,
                "accurate_opp_half_passes": 10.8137,
                "crosses_total": 1.1438,
                "crosses_accurate": 0.7501,
                "touches": 37.5452,
                "possession_lost": 7.2216,
                "dispossessed": 0.2179,
                "duels_lost": 2.7984,
                "aerial_won": 0.9,
                "aerial_lost": 0.448,
                "interceptions": 0.442,
                "tackles_won": 0.9238,
                "tackles": 2.011,
                "clearances": 1.2692,
                "total_contest": 0.9267,
                "won_contest": 0.7607,
                "challenges_lost": 1.2883,
                "fouls": 0.701,
                "fouls_drawn": 0.5192,
                "blocks": 0.0,
                "big_chances_created": 0.1399,
                "big_chances_missed": 0.0,
                "xgot": 0.0046,
                "ball_carries": 8.346,
                "total_progression": 15.598,
                "progressive_carries": 0.1269,
                "shots_off_target": 0.533,
                "duel_xg_multiplier": 0.7273,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.275,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Myles Lewis-Skelly",
                "opponent_faced": "Myles Lewis-Skelly",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0565,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9873,
                "creation_factor": 1.1792,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0565,
                "goal_rate": 0.0508,
                "scorer_weight": 0.0575,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0671,
                "finishing_factor": 0.9873,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.8218,
                "expected_assists": 0.0934,
                "assist_rate": 0.0915,
                "assists": 0,
                "expected_goals": 0.0582,
                "goal_rate": 0.0508,
                "goals": 0,
                "shots_on_target": 0.2155,
                "total_shots": 0.7485,
                "rating": 6.8155,
                "minutes": 84.91,
                "total_pass": 26.9353,
                "accurate_pass": 21.8477,
                "duels_won": 4.2131,
                "total_long_balls": 1.5879,
                "accurate_long_balls": 0.7973,
                "total_own_half_passes": 12.0939,
                "accurate_own_half_passes": 11.0342,
                "total_opp_half_passes": 14.8415,
                "accurate_opp_half_passes": 10.8137,
                "crosses_total": 1.1438,
                "crosses_accurate": 0.7501,
                "touches": 37.5452,
                "possession_lost": 7.2216,
                "dispossessed": 0.2179,
                "duels_lost": 2.7984,
                "aerial_won": 0.9,
                "aerial_lost": 0.448,
                "interceptions": 0.442,
                "tackles_won": 0.9238,
                "tackles": 2.011,
                "clearances": 1.2692,
                "total_contest": 0.9267,
                "won_contest": 0.7607,
                "challenges_lost": 1.2883,
                "fouls": 0.701,
                "fouls_drawn": 0.5192,
                "blocks": 0.0,
                "big_chances_created": 0.1399,
                "big_chances_missed": 0.0,
                "xgot": 0.0046,
                "ball_carries": 8.346,
                "total_progression": 15.598,
                "progressive_carries": 0.1269,
                "shots_off_target": 0.533,
                "duel_xg_multiplier": 0.7273,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.275,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Myles Lewis-Skelly",
                "opponent_faced": "Myles Lewis-Skelly",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0565,
                "projected_assists": 0,
                "assist_probability": 0.0892,
                "finishing_factor": 0.9873,
                "creation_factor": 1.1792,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0892,
                "assist_rate": 0.0915,
                "provider_weight": 0.1101,
                "squad_weight_total": 0.6106,
                "weight_share": 0.1804,
                "creation_factor": 1.1792,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 14
              }
            }
          ]
        },
        "Elliot Stroud": {
          "player_id": 1383695,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 21,
          "height": 185,
          "market_value": 8400000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0578,
            "assist_rate": 0.0646,
            "assists": 0,
            "expected_goals": 0.0469,
            "goal_rate": 0.0474,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7172,
            "minutes": 72,
            "total_pass": 14,
            "accurate_pass": 9,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 5,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 23,
            "possession_lost": 7.81,
            "dispossessed": 0.2408,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 8,
            "total_progression": 48,
            "progressive_carries": 2,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.8002,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.9,
            "crosses_attempted": 2.2,
            "duel_win_rate": 0.324,
            "pressing_faced": "HIGH",
            "matchup_zone": "Right Mid vs Left Back — Wide Channel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Ben White",
            "opponent_faced": "Ben White",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0458,
            "projected_assists": 0,
            "assist_probability": 0.0562,
            "finishing_factor": 1.0587,
            "creation_factor": 1.2283,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 60,
                "rating": 6.3,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 12,
                "accurate_pass": 6,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 1,
                "clearances": 0,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 7,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0263,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 31,
                "accurate_pass": 22,
                "key_pass": 1,
                "tackles": 6,
                "tackles_won": 1,
                "interceptions": 0,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 7,
                "ball_recovery": 5,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 26,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0572,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 12,
                "key_pass": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 60,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0104,
                "expected_assists": 0.0022,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 7,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 63,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0411,
                "expected_assists": 0.0075,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 59,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0141,
                "expected_assists": 0.0059,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "interceptions": 1,
                "clearances": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 71,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0283,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3856,
            "combined_rank_score": 1851.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 765.0,
            "sofascore_rating": 6.65,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2937.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7172,
            "source_file": "data/player_rankings.csv",
            "player_name": "Elliot Stroud",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Tomasz Kędziora",
                  "ranking": 3851
                },
                {
                  "player_name": "Kévin Danois",
                  "ranking": 3852
                },
                {
                  "player_name": "Gauthier Hein",
                  "ranking": 3853
                },
                {
                  "player_name": "Keito Nakamura",
                  "ranking": 3854
                },
                {
                  "player_name": "Jeffrey Gouweleeuw",
                  "ranking": 3855
                }
              ],
              "lower": [
                {
                  "player_name": "Rani Khedira",
                  "ranking": 3857
                },
                {
                  "player_name": "Lee Jae Sung",
                  "ranking": 3858
                },
                {
                  "player_name": "Ellyes Skhiri",
                  "ranking": 3859
                },
                {
                  "player_name": "Maximilian Eggestein",
                  "ranking": 3860
                },
                {
                  "player_name": "Dani Raba",
                  "ranking": 3861
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.701,
          "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.701,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9998,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 128.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.7,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.0933
            },
            "rationale": "XGBoost regressor (M_service) evaluated 7 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.09, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.556,
                "expected_assists": 0.0433,
                "assists": 0.0663,
                "assist_rate": 0.0663,
                "expected_goals": 0.0525,
                "goals": 0.0607,
                "goal_rate": 0.0607,
                "shots_on_target": 0.2013,
                "total_shots": 0.7235,
                "rating": 6.7172,
                "minutes": 72.23,
                "total_pass": 14.4671,
                "accurate_pass": 9.4493,
                "duels_won": 3.0119,
                "total_long_balls": 1.4504,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 6.1878,
                "accurate_own_half_passes": 4.3607,
                "total_opp_half_passes": 8.2793,
                "accurate_opp_half_passes": 5.0885,
                "crosses_total": 0.4873,
                "crosses_accurate": 0.1069,
                "touches": 22.9236,
                "possession_lost": 7.8116,
                "dispossessed": 0.2408,
                "duels_lost": 3.0375,
                "aerial_won": 0.5217,
                "aerial_lost": 1.1889,
                "interceptions": 0.4734,
                "tackles_won": 0.5924,
                "tackles": 1.8968,
                "clearances": 0.3304,
                "total_contest": 0.3887,
                "won_contest": 0.3887,
                "challenges_lost": 0.6195,
                "fouls": 1.1361,
                "fouls_drawn": 0.2047,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.1188,
                "total_progression": 47.9456,
                "progressive_carries": 1.564,
                "shots_off_target": 0.5221
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.1595,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.1356,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1152,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.098,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0833,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.3488,
                  "creative_index": 0.1962,
                  "expectedGoals": 0.0075,
                  "expectedAssists": 0.0188,
                  "keyPass": 0.4624
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5560360550880432,
                    "model_output": 0.556,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1067
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0905
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0753
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0684
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0294
                        }
                      ],
                      "others": -0.1449,
                      "total": 0.556,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.127658
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.109264
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.090079
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.089486
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.041066
                        }
                      ],
                      "others_margin": -0.2316
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.043326351791620255,
                    "model_output": 0.0433,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0207
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0117
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0062
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0036
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0032
                        }
                      ],
                      "others": -0.0084,
                      "total": 0.0433,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.280054
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.202571
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.112578
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.064188
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.060108
                        }
                      ],
                      "others_margin": -0.175727
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.06631745398044586,
                    "model_output": 0.0663,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0088
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0065
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0055
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0051
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0038
                        }
                      ],
                      "others": -0.0103,
                      "total": 0.0663,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.109193
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.089669
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.075977
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.065234
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.048669
                        }
                      ],
                      "others_margin": -0.14351
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.052513934671878815,
                    "model_output": 0.0525,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0372
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0079
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0077
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0048
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0025
                        }
                      ],
                      "others": -0.0042,
                      "total": 0.0525,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.520093
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.156853
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.153274
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.084557
                        },
                        {
                          "name": "goals",
                          "margin": -0.043015
                        }
                      ],
                      "others_margin": -0.076584
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.060663606971502304,
                    "model_output": 0.0607,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0222
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0148
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0081
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0043
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0035
                        }
                      ],
                      "others": -0.0042,
                      "total": 0.0607,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.266968
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.22804
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.131928
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.068285
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.056051
                        }
                      ],
                      "others_margin": -0.068711
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.20132949948310852,
                    "model_output": 0.2013,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0918
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0418
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0271
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0121
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0114
                        }
                      ],
                      "others": -0.0094,
                      "total": 0.2013,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.340776
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.204445
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.137113
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.058913
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.055663
                        }
                      ],
                      "others_margin": -0.045368
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7234764695167542,
                    "model_output": 0.7235,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2902
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1319
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0662
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0517
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0468
                        }
                      ],
                      "others": 0.0616,
                      "total": 0.7235,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.290159
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.131946
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.066247
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.051691
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.046843
                        }
                      ],
                      "others_margin": 0.061534
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.717170715332031,
                    "model_output": 6.7172,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0485
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0388
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.033
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0246
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0145
                        }
                      ],
                      "others": -0.03,
                      "total": 6.7172,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.048473
                        },
                        {
                          "name": "rating",
                          "margin": -0.03879
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.03302
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.024573
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.014451
                        }
                      ],
                      "others_margin": -0.030074
                    }
                  }
                ],
                "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 0.9998, quality 0.503)",
              "stats": {
                "key_pass": 0.5559,
                "expected_assists": 0.0433,
                "assists": 0.0663,
                "assist_rate": 0.0663,
                "expected_goals": 0.0525,
                "goals": 0.0607,
                "goal_rate": 0.0607,
                "shots_on_target": 0.2013,
                "total_shots": 0.7233,
                "rating": 6.7172,
                "minutes": 72.23,
                "total_pass": 14.4642,
                "accurate_pass": 9.4474,
                "duels_won": 3.0113,
                "total_long_balls": 1.4501,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 6.1866,
                "accurate_own_half_passes": 4.3598,
                "total_opp_half_passes": 8.2776,
                "accurate_opp_half_passes": 5.0875,
                "crosses_total": 0.4872,
                "crosses_accurate": 0.1069,
                "touches": 22.919,
                "possession_lost": 7.81,
                "dispossessed": 0.2408,
                "duels_lost": 3.0369,
                "aerial_won": 0.5216,
                "aerial_lost": 1.1887,
                "interceptions": 0.4733,
                "tackles_won": 0.5923,
                "tackles": 1.8964,
                "clearances": 0.3303,
                "total_contest": 0.3886,
                "won_contest": 0.3886,
                "challenges_lost": 0.6194,
                "fouls": 1.1359,
                "fouls_drawn": 0.2047,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.1172,
                "total_progression": 47.936,
                "progressive_carries": 1.5637,
                "shots_off_target": 0.522
              },
              "params": {
                "market_value_eur": 8400000,
                "quality_factor": 0.5035,
                "boost_factor": 0.9998,
                "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.0253)",
              "stats": {
                "key_pass": 0.5559,
                "expected_assists": 0.0433,
                "assists": 0.0646,
                "assist_rate": 0.0646,
                "expected_goals": 0.0525,
                "goals": 0.0592,
                "goal_rate": 0.0592,
                "shots_on_target": 0.1962,
                "total_shots": 0.7192,
                "rating": 6.7172,
                "minutes": 72.23,
                "total_pass": 14.4642,
                "accurate_pass": 9.4474,
                "duels_won": 3.0113,
                "total_long_balls": 1.4501,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 6.1866,
                "accurate_own_half_passes": 4.3598,
                "total_opp_half_passes": 8.2776,
                "accurate_opp_half_passes": 5.0875,
                "crosses_total": 0.5183,
                "crosses_accurate": 0.1069,
                "touches": 22.919,
                "possession_lost": 7.81,
                "dispossessed": 0.2408,
                "duels_lost": 3.0369,
                "aerial_won": 0.5216,
                "aerial_lost": 1.1887,
                "interceptions": 0.4903,
                "tackles_won": 0.6063,
                "tackles": 1.8964,
                "clearances": 0.3303,
                "total_contest": 0.3886,
                "won_contest": 0.3886,
                "challenges_lost": 0.6194,
                "fouls": 1.1362,
                "fouls_drawn": 0.1995,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.1172,
                "total_progression": 47.936,
                "progressive_carries": 1.5637,
                "shots_off_target": 0.522
              },
              "params": {
                "blend_weight": 0.0253,
                "history_matches": 7,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8026,
                "prior_reliability": 0.0933,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.4872,
                  "after": 0.5183
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.4733,
                  "after": 0.4903
                },
                {
                  "stat": "wonTackle",
                  "before": 0.5923,
                  "after": 0.6063
                },
                {
                  "stat": "wasFouled",
                  "before": 0.2047,
                  "after": 0.1995
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2013,
                  "after": 0.1962
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5559,
                "expected_assists": 0.0433,
                "assists": 0.0646,
                "assist_rate": 0.0646,
                "expected_goals": 0.0525,
                "goals": 0.0592,
                "goal_rate": 0.0592,
                "shots_on_target": 0.1962,
                "total_shots": 0.7192,
                "rating": 6.7172,
                "minutes": 72.23,
                "total_pass": 14.4642,
                "accurate_pass": 9.4474,
                "duels_won": 3.0113,
                "total_long_balls": 1.4501,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 6.1866,
                "accurate_own_half_passes": 4.3598,
                "total_opp_half_passes": 8.2776,
                "accurate_opp_half_passes": 5.0875,
                "crosses_total": 0.5183,
                "crosses_accurate": 0.1069,
                "touches": 22.919,
                "possession_lost": 7.81,
                "dispossessed": 0.2408,
                "duels_lost": 3.0369,
                "aerial_won": 0.5216,
                "aerial_lost": 1.1887,
                "interceptions": 0.4903,
                "tackles_won": 0.6063,
                "tackles": 1.8964,
                "clearances": 0.3303,
                "total_contest": 0.3886,
                "won_contest": 0.3886,
                "challenges_lost": 0.6194,
                "fouls": 1.1362,
                "fouls_drawn": 0.1995,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.1172,
                "total_progression": 47.936,
                "progressive_carries": 1.5637,
                "shots_off_target": 0.522
              },
              "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.5559,
                "expected_assists": 0.0433,
                "assists": 0.0646,
                "assist_rate": 0.0646,
                "expected_goals": 0.042,
                "goals": 0.0474,
                "goal_rate": 0.0474,
                "shots_on_target": 0.157,
                "total_shots": 0.5755,
                "rating": 6.7172,
                "minutes": 72.23,
                "total_pass": 14.4642,
                "accurate_pass": 9.4474,
                "duels_won": 3.0113,
                "total_long_balls": 1.4501,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 6.1866,
                "accurate_own_half_passes": 4.3598,
                "total_opp_half_passes": 8.2776,
                "accurate_opp_half_passes": 5.0875,
                "crosses_total": 0.5183,
                "crosses_accurate": 0.1069,
                "touches": 22.919,
                "possession_lost": 7.81,
                "dispossessed": 0.2408,
                "duels_lost": 3.0369,
                "aerial_won": 1.2,
                "aerial_lost": 1.1887,
                "interceptions": 0.4903,
                "tackles_won": 0.6063,
                "tackles": 1.8964,
                "clearances": 0.3303,
                "total_contest": 0.3886,
                "won_contest": 0.3886,
                "challenges_lost": 0.6194,
                "fouls": 1.1362,
                "fouls_drawn": 0.1995,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.1172,
                "total_progression": 47.936,
                "progressive_carries": 1.5637,
                "shots_off_target": 0.4177,
                "duel_xg_multiplier": 0.8002,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.324,
                "pressing_faced": "HIGH",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ben White",
                "opponent_faced": "Ben White",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ben White",
                  "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                  "duel_win_rate": 0.324,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.8002,
                  "skill_edge": -0.1319,
                  "height_edge": -0.004,
                  "attacker_skill": 0.5146,
                  "defender_skill": 0.8077,
                  "attacker_role": "RM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Ben White",
                      "market_value": 32000000,
                      "role": "LB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.8077
                    }
                  ],
                  "xg_override": 0.042
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.5216,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 0.7192,
                  "after": 0.5755
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.522,
                  "after": 0.4177
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1962,
                  "after": 0.157
                },
                {
                  "stat": "goals",
                  "before": 0.0592,
                  "after": 0.0474
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0525,
                  "after": 0.042
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.5559,
                "expected_assists": 0.0433,
                "assist_rate": 0.0646,
                "assists": 0,
                "expected_goals": 0.042,
                "goal_rate": 0.0474,
                "goals": 0,
                "shots_on_target": 0.157,
                "total_shots": 0.5755,
                "rating": 6.7172,
                "minutes": 72.23,
                "total_pass": 14.4642,
                "accurate_pass": 9.4474,
                "duels_won": 3.0113,
                "total_long_balls": 1.4501,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 6.1866,
                "accurate_own_half_passes": 4.3598,
                "total_opp_half_passes": 8.2776,
                "accurate_opp_half_passes": 5.0875,
                "crosses_total": 0.5183,
                "crosses_accurate": 0.1069,
                "touches": 22.919,
                "possession_lost": 7.81,
                "dispossessed": 0.2408,
                "duels_lost": 3.0369,
                "aerial_won": 1.2,
                "aerial_lost": 1.1887,
                "interceptions": 0.4903,
                "tackles_won": 0.6063,
                "tackles": 1.8964,
                "clearances": 0.3303,
                "total_contest": 0.3886,
                "won_contest": 0.3886,
                "challenges_lost": 0.6194,
                "fouls": 1.1362,
                "fouls_drawn": 0.1995,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.1172,
                "total_progression": 47.936,
                "progressive_carries": 1.5637,
                "shots_off_target": 0.4177,
                "duel_xg_multiplier": 0.8002,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.324,
                "pressing_faced": "HIGH",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ben White",
                "opponent_faced": "Ben White",
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5559,
                "expected_assists": 0.0578,
                "assist_rate": 0.0646,
                "assists": 0,
                "expected_goals": 0.0469,
                "goal_rate": 0.0474,
                "goals": 0,
                "shots_on_target": 0.157,
                "total_shots": 0.5755,
                "rating": 6.7172,
                "minutes": 72.23,
                "total_pass": 14.4642,
                "accurate_pass": 9.4474,
                "duels_won": 3.0113,
                "total_long_balls": 1.4501,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 6.1866,
                "accurate_own_half_passes": 4.3598,
                "total_opp_half_passes": 8.2776,
                "accurate_opp_half_passes": 5.0875,
                "crosses_total": 0.5183,
                "crosses_accurate": 0.1069,
                "touches": 22.919,
                "possession_lost": 7.81,
                "dispossessed": 0.2408,
                "duels_lost": 3.0369,
                "aerial_won": 1.2,
                "aerial_lost": 1.1887,
                "interceptions": 0.4903,
                "tackles_won": 0.6063,
                "tackles": 1.8964,
                "clearances": 0.3303,
                "total_contest": 0.3886,
                "won_contest": 0.3886,
                "challenges_lost": 0.6194,
                "fouls": 1.1362,
                "fouls_drawn": 0.1995,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.1172,
                "total_progression": 47.936,
                "progressive_carries": 1.5637,
                "shots_off_target": 0.4177,
                "duel_xg_multiplier": 0.8002,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.324,
                "pressing_faced": "HIGH",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ben White",
                "opponent_faced": "Ben White",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0587,
                "creation_factor": 1.2283
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0433,
                  "after": 0.0578
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 74.0)",
              "stats": {
                "key_pass": 0.5559,
                "expected_assists": 0.0578,
                "assist_rate": 0.0646,
                "assists": 0,
                "expected_goals": 0.0469,
                "goal_rate": 0.0474,
                "goals": 0,
                "shots_on_target": 0.157,
                "total_shots": 0.5755,
                "rating": 6.7172,
                "minutes": 72.23,
                "total_pass": 14.4642,
                "accurate_pass": 9.4474,
                "duels_won": 3.0113,
                "total_long_balls": 1.4501,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 6.1866,
                "accurate_own_half_passes": 4.3598,
                "total_opp_half_passes": 8.2776,
                "accurate_opp_half_passes": 5.0875,
                "crosses_total": 0.5183,
                "crosses_accurate": 0.1069,
                "touches": 22.919,
                "possession_lost": 7.81,
                "dispossessed": 0.2408,
                "duels_lost": 3.0369,
                "aerial_won": 1.2,
                "aerial_lost": 1.1887,
                "interceptions": 0.4903,
                "tackles_won": 0.6063,
                "tackles": 1.8964,
                "clearances": 0.3303,
                "total_contest": 0.3886,
                "won_contest": 0.3886,
                "challenges_lost": 0.6194,
                "fouls": 1.1362,
                "fouls_drawn": 0.1995,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.1172,
                "total_progression": 47.936,
                "progressive_carries": 1.5637,
                "shots_off_target": 0.4177,
                "duel_xg_multiplier": 0.8002,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.324,
                "pressing_faced": "HIGH",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ben White",
                "opponent_faced": "Ben White",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0587,
                "creation_factor": 1.2283,
                "fifa_overall": 74.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": 3856,
                "fifa_rank": 2937.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.5559,
                "expected_assists": 0.0578,
                "assist_rate": 0.0646,
                "assists": 0,
                "expected_goals": 0.0469,
                "goal_rate": 0.0474,
                "goals": 0,
                "shots_on_target": 0.157,
                "total_shots": 0.5755,
                "rating": 6.7172,
                "minutes": 72.23,
                "total_pass": 14.4642,
                "accurate_pass": 9.4474,
                "duels_won": 3.0113,
                "total_long_balls": 1.4501,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 6.1866,
                "accurate_own_half_passes": 4.3598,
                "total_opp_half_passes": 8.2776,
                "accurate_opp_half_passes": 5.0875,
                "crosses_total": 0.5183,
                "crosses_accurate": 0.1069,
                "touches": 22.919,
                "possession_lost": 7.81,
                "dispossessed": 0.2408,
                "duels_lost": 3.0369,
                "aerial_won": 1.2,
                "aerial_lost": 1.1887,
                "interceptions": 0.4903,
                "tackles_won": 0.6063,
                "tackles": 1.8964,
                "clearances": 0.3303,
                "total_contest": 0.3886,
                "won_contest": 0.3886,
                "challenges_lost": 0.6194,
                "fouls": 1.1362,
                "fouls_drawn": 0.1995,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.1172,
                "total_progression": 47.936,
                "progressive_carries": 1.5637,
                "shots_off_target": 0.4177,
                "duel_xg_multiplier": 0.8002,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.324,
                "pressing_faced": "HIGH",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ben White",
                "opponent_faced": "Ben White",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0458,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0587,
                "creation_factor": 1.2283,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0458,
                "goal_rate": 0.0474,
                "scorer_weight": 0.0497,
                "squad_weight_total": 0.8559,
                "weight_share": 0.058,
                "finishing_factor": 1.0587,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.5559,
                "expected_assists": 0.0578,
                "assist_rate": 0.0646,
                "assists": 0,
                "expected_goals": 0.0469,
                "goal_rate": 0.0474,
                "goals": 0,
                "shots_on_target": 0.157,
                "total_shots": 0.5755,
                "rating": 6.7172,
                "minutes": 72.23,
                "total_pass": 14.4642,
                "accurate_pass": 9.4474,
                "duels_won": 3.0113,
                "total_long_balls": 1.4501,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 6.1866,
                "accurate_own_half_passes": 4.3598,
                "total_opp_half_passes": 8.2776,
                "accurate_opp_half_passes": 5.0875,
                "crosses_total": 0.5183,
                "crosses_accurate": 0.1069,
                "touches": 22.919,
                "possession_lost": 7.81,
                "dispossessed": 0.2408,
                "duels_lost": 3.0369,
                "aerial_won": 1.2,
                "aerial_lost": 1.1887,
                "interceptions": 0.4903,
                "tackles_won": 0.6063,
                "tackles": 1.8964,
                "clearances": 0.3303,
                "total_contest": 0.3886,
                "won_contest": 0.3886,
                "challenges_lost": 0.6194,
                "fouls": 1.1362,
                "fouls_drawn": 0.1995,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.1172,
                "total_progression": 47.936,
                "progressive_carries": 1.5637,
                "shots_off_target": 0.4177,
                "duel_xg_multiplier": 0.8002,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.324,
                "pressing_faced": "HIGH",
                "matchup_zone": "Right Mid vs Left Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ben White",
                "opponent_faced": "Ben White",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0458,
                "projected_assists": 0,
                "assist_probability": 0.0562,
                "finishing_factor": 1.0587,
                "creation_factor": 1.2283,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0562,
                "assist_rate": 0.0646,
                "provider_weight": 0.071,
                "squad_weight_total": 0.6106,
                "weight_share": 0.1163,
                "creation_factor": 1.2283,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 14
              }
            }
          ]
        },
        "Matt Crooks": {
          "player_id": 140479,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 25,
          "height": 193,
          "market_value": 1000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0354,
            "assist_rate": 0.052,
            "assists": 0,
            "expected_goals": 0.0352,
            "goal_rate": 0.0468,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.706,
            "minutes": 72,
            "total_pass": 16,
            "accurate_pass": 12,
            "duels_won": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 6,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 25,
            "possession_lost": 5.9058,
            "dispossessed": 0.4066,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 0,
            "blocks": 1,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 6,
            "total_progression": 23,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.7657,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.5,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.291,
            "pressing_faced": "ULTRA_HIGH",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Bruno Guimarães",
            "opponent_faced": "Bruno Guimarães",
            "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0346,
            "projected_assists": 0,
            "assist_probability": 0.0348,
            "finishing_factor": 1.1877,
            "creation_factor": 1.25,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 45,
                "rating": 6.3,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0059,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 16,
                "accurate_pass": 15,
                "key_pass": 1,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 3,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 68,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 7,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 65,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0147,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 14,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1159,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 69,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 12,
                "tackles": 2,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 15,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 8,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4478,
            "combined_rank_score": 2498.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 257.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 1.0,
            "fifa_rank": 4739.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.706,
            "source_file": "data/player_rankings.csv",
            "player_name": "Matt Crooks",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gastón Álvarez",
                  "ranking": 4473
                },
                {
                  "player_name": "Iker Losada",
                  "ranking": 4474
                },
                {
                  "player_name": "Christopher Bonsu Baah",
                  "ranking": 4475
                },
                {
                  "player_name": "Valentin Atangana",
                  "ranking": 4476
                },
                {
                  "player_name": "Alex Luna",
                  "ranking": 4477
                }
              ],
              "lower": [
                {
                  "player_name": "Lautaro Rivero",
                  "ranking": 4479
                },
                {
                  "player_name": "Robinio Vaz",
                  "ranking": 4480
                },
                {
                  "player_name": "Franco Vázquez",
                  "ranking": 4481
                },
                {
                  "player_name": "Fraser Forster",
                  "ranking": 4482
                },
                {
                  "player_name": "Rodrigo Rey",
                  "ranking": 4483
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.635,
          "history_matches": 6,
          "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": 6,
            "data_confidence": 0.635,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9908,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "minutes": 90.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0667
            },
            "rationale": "XGBoost regressor (M_service) evaluated 6 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.07, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4678,
                "expected_assists": 0.0267,
                "assists": 0.0535,
                "assist_rate": 0.0535,
                "expected_goals": 0.0415,
                "goals": 0.0629,
                "goal_rate": 0.0629,
                "shots_on_target": 0.1737,
                "total_shots": 0.576,
                "rating": 6.706,
                "minutes": 71.78,
                "total_pass": 16.0483,
                "accurate_pass": 11.7273,
                "duels_won": 4.0078,
                "total_long_balls": 1.4263,
                "accurate_long_balls": 0.75,
                "total_own_half_passes": 7.4505,
                "accurate_own_half_passes": 6.004,
                "total_opp_half_passes": 8.5978,
                "accurate_opp_half_passes": 5.7232,
                "crosses_total": 0.1948,
                "crosses_accurate": 0.1948,
                "touches": 25.3526,
                "possession_lost": 5.9606,
                "dispossessed": 0.4104,
                "duels_lost": 4.656,
                "aerial_won": 1.0867,
                "aerial_lost": 0.9572,
                "interceptions": 0.2292,
                "tackles_won": 1.3107,
                "tackles": 2.2815,
                "clearances": 1.2135,
                "total_contest": 0.3948,
                "won_contest": 0.2292,
                "challenges_lost": 1.0772,
                "fouls": 2.0456,
                "fouls_drawn": 0.4104,
                "blocks": 0.7167,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.0122,
                "total_progression": 23.1687,
                "progressive_carries": 0.2292,
                "shots_off_target": 0.4023
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.2408,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.2047,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.174,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1479,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.1257,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1069,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.0,
                  "creative_index": 0.1689,
                  "expectedGoals": 0.0,
                  "expectedAssists": 0.0223,
                  "keyPass": 0.3887
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.46777522563934326,
                    "model_output": 0.4678,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1177
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0934
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0885
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.073
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.026
                        }
                      ],
                      "others": -0.2008,
                      "total": 0.4678,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.141806
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.128897
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122556
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.09995
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.038191
                        }
                      ],
                      "others_margin": -0.357182
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.026707276701927185,
                    "model_output": 0.0267,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0205
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0142
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0066
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0051
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.0201,
                      "total": 0.0267,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.277317
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.249461
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124253
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.095152
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.094693
                        }
                      ],
                      "others_margin": -0.561524
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.053489476442337036,
                    "model_output": 0.0535,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0089
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0077
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0073
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0052
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0043
                        }
                      ],
                      "others": -0.0136,
                      "total": 0.0535,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.111002
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.096546
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.091087
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.070244
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.062658
                        }
                      ],
                      "others_margin": -0.226353
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04148607701063156,
                    "model_output": 0.0415,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0365
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0117
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0065
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0058
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0033
                        }
                      ],
                      "others": -0.0047,
                      "total": 0.0415,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.506566
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.23708
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.161146
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.143974
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.074978
                        }
                      ],
                      "others_margin": -0.108596
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06287641078233719,
                    "model_output": 0.0629,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0197
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0152
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0087
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.006
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0056
                        }
                      ],
                      "others": -0.0059,
                      "total": 0.0629,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.232949
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.227056
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.135724
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.083477
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.079051
                        }
                      ],
                      "others_margin": -0.088344
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.17369310557842255,
                    "model_output": 0.1737,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1065
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0379
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0252
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0232
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0156
                        }
                      ],
                      "others": -0.0134,
                      "total": 0.1737,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.408146
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.197656
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.157142
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.14532
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.087264
                        }
                      ],
                      "others_margin": -0.074018
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5759832262992859,
                    "model_output": 0.576,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.3212
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1246
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0868
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0637
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0523
                        }
                      ],
                      "others": -0.0095,
                      "total": 0.576,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.321184
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12465
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.086813
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.063717
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.052327
                        }
                      ],
                      "others_margin": -0.009562
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.706034183502197,
                    "model_output": 6.706,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0433
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0419
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0334
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0251
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0136
                        }
                      ],
                      "others": -0.0443,
                      "total": 6.706,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.043285
                        },
                        {
                          "name": "rating",
                          "margin": -0.041869
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.033407
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.025116
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.01358
                        }
                      ],
                      "others_margin": -0.044344
                    }
                  }
                ],
                "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 0.9908, quality 0.437)",
              "stats": {
                "key_pass": 0.4635,
                "expected_assists": 0.0265,
                "assists": 0.053,
                "assist_rate": 0.053,
                "expected_goals": 0.0411,
                "goals": 0.0623,
                "goal_rate": 0.0623,
                "shots_on_target": 0.1721,
                "total_shots": 0.5707,
                "rating": 6.706,
                "minutes": 71.78,
                "total_pass": 15.9007,
                "accurate_pass": 11.6194,
                "duels_won": 3.9709,
                "total_long_balls": 1.4132,
                "accurate_long_balls": 0.7431,
                "total_own_half_passes": 7.382,
                "accurate_own_half_passes": 5.9488,
                "total_opp_half_passes": 8.5187,
                "accurate_opp_half_passes": 5.6705,
                "crosses_total": 0.193,
                "crosses_accurate": 0.193,
                "touches": 25.1194,
                "possession_lost": 5.9058,
                "dispossessed": 0.4066,
                "duels_lost": 4.6132,
                "aerial_won": 1.0767,
                "aerial_lost": 0.9484,
                "interceptions": 0.2271,
                "tackles_won": 1.2986,
                "tackles": 2.2605,
                "clearances": 1.2023,
                "total_contest": 0.3912,
                "won_contest": 0.2271,
                "challenges_lost": 1.0673,
                "fouls": 2.0268,
                "fouls_drawn": 0.4066,
                "blocks": 0.7101,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9569,
                "total_progression": 22.9555,
                "progressive_carries": 0.2271,
                "shots_off_target": 0.3986
              },
              "params": {
                "market_value_eur": 1000000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9908,
                "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.0197)",
              "stats": {
                "key_pass": 0.4635,
                "expected_assists": 0.0265,
                "assists": 0.052,
                "assist_rate": 0.052,
                "expected_goals": 0.0411,
                "goals": 0.0611,
                "goal_rate": 0.0611,
                "shots_on_target": 0.1687,
                "total_shots": 0.5595,
                "rating": 6.706,
                "minutes": 71.78,
                "total_pass": 15.9007,
                "accurate_pass": 11.6194,
                "duels_won": 3.9709,
                "total_long_balls": 1.4132,
                "accurate_long_balls": 0.7431,
                "total_own_half_passes": 7.382,
                "accurate_own_half_passes": 5.9488,
                "total_opp_half_passes": 8.5187,
                "accurate_opp_half_passes": 5.6705,
                "crosses_total": 0.1892,
                "crosses_accurate": 0.193,
                "touches": 25.1194,
                "possession_lost": 5.9058,
                "dispossessed": 0.4066,
                "duels_lost": 4.6132,
                "aerial_won": 1.0767,
                "aerial_lost": 0.9484,
                "interceptions": 0.2226,
                "tackles_won": 1.3202,
                "tackles": 2.2605,
                "clearances": 1.2023,
                "total_contest": 0.3912,
                "won_contest": 0.2271,
                "challenges_lost": 1.0673,
                "fouls": 2.0183,
                "fouls_drawn": 0.4143,
                "blocks": 0.7101,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9569,
                "total_progression": 22.9555,
                "progressive_carries": 0.2271,
                "shots_off_target": 0.3986
              },
              "params": {
                "blend_weight": 0.0197,
                "history_matches": 6,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.7976,
                "prior_reliability": 0.0667,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.2986,
                  "after": 1.3202
                },
                {
                  "stat": "totalShots",
                  "before": 0.5707,
                  "after": 0.5595
                },
                {
                  "stat": "fouls",
                  "before": 2.0268,
                  "after": 2.0183
                },
                {
                  "stat": "wasFouled",
                  "before": 0.4066,
                  "after": 0.4143
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.4635,
                "expected_assists": 0.0265,
                "assists": 0.052,
                "assist_rate": 0.052,
                "expected_goals": 0.0411,
                "goals": 0.0611,
                "goal_rate": 0.0611,
                "shots_on_target": 0.1687,
                "total_shots": 0.5673,
                "rating": 6.706,
                "minutes": 71.78,
                "total_pass": 15.9007,
                "accurate_pass": 11.6194,
                "duels_won": 3.9709,
                "total_long_balls": 1.4132,
                "accurate_long_balls": 0.7431,
                "total_own_half_passes": 7.382,
                "accurate_own_half_passes": 5.9488,
                "total_opp_half_passes": 8.5187,
                "accurate_opp_half_passes": 5.6705,
                "crosses_total": 0.1892,
                "crosses_accurate": 0.1892,
                "touches": 25.1194,
                "possession_lost": 5.9058,
                "dispossessed": 0.4066,
                "duels_lost": 4.6132,
                "aerial_won": 1.0767,
                "aerial_lost": 0.9484,
                "interceptions": 0.2226,
                "tackles_won": 1.3202,
                "tackles": 2.2605,
                "clearances": 1.2023,
                "total_contest": 0.3912,
                "won_contest": 0.2271,
                "challenges_lost": 1.0673,
                "fouls": 2.0183,
                "fouls_drawn": 0.4143,
                "blocks": 0.7101,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9569,
                "total_progression": 22.9555,
                "progressive_carries": 0.2271,
                "shots_off_target": 0.3986
              },
              "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.4635,
                "expected_assists": 0.0265,
                "assists": 0.052,
                "assist_rate": 0.052,
                "expected_goals": 0.0315,
                "goals": 0.0468,
                "goal_rate": 0.0468,
                "shots_on_target": 0.1292,
                "total_shots": 0.4344,
                "rating": 6.706,
                "minutes": 71.78,
                "total_pass": 15.9007,
                "accurate_pass": 11.6194,
                "duels_won": 3.9709,
                "total_long_balls": 1.4132,
                "accurate_long_balls": 0.7431,
                "total_own_half_passes": 7.382,
                "accurate_own_half_passes": 5.9488,
                "total_opp_half_passes": 8.5187,
                "accurate_opp_half_passes": 5.6705,
                "crosses_total": 0.1892,
                "crosses_accurate": 0.1892,
                "touches": 25.1194,
                "possession_lost": 5.9058,
                "dispossessed": 0.4066,
                "duels_lost": 4.6132,
                "aerial_won": 1.4,
                "aerial_lost": 0.9484,
                "interceptions": 0.2226,
                "tackles_won": 1.3202,
                "tackles": 2.2605,
                "clearances": 1.2023,
                "total_contest": 0.3912,
                "won_contest": 0.2271,
                "challenges_lost": 1.0673,
                "fouls": 2.0183,
                "fouls_drawn": 0.4143,
                "blocks": 0.7101,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9569,
                "total_progression": 22.9555,
                "progressive_carries": 0.2271,
                "shots_off_target": 0.3052,
                "duel_xg_multiplier": 0.7657,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.291,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Bruno Guimarães",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.291,
                  "pressing_faced": "ULTRA_HIGH",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.7657,
                  "skill_edge": -0.2034,
                  "height_edge": 0.044,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.8893,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Bruno Guimarães",
                      "market_value": 77000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.8893
                    }
                  ],
                  "xg_override": 0.0315
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 1.0767,
                  "after": 1.4
                },
                {
                  "stat": "totalShots",
                  "before": 0.5673,
                  "after": 0.4344
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.3986,
                  "after": 0.3052
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1687,
                  "after": 0.1292
                },
                {
                  "stat": "goals",
                  "before": 0.0611,
                  "after": 0.0468
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0411,
                  "after": 0.0315
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.4635,
                "expected_assists": 0.0265,
                "assist_rate": 0.052,
                "assists": 0,
                "expected_goals": 0.0315,
                "goal_rate": 0.0468,
                "goals": 0,
                "shots_on_target": 0.1292,
                "total_shots": 0.4344,
                "rating": 6.706,
                "minutes": 71.78,
                "total_pass": 15.9007,
                "accurate_pass": 11.6194,
                "duels_won": 3.9709,
                "total_long_balls": 1.4132,
                "accurate_long_balls": 0.7431,
                "total_own_half_passes": 7.382,
                "accurate_own_half_passes": 5.9488,
                "total_opp_half_passes": 8.5187,
                "accurate_opp_half_passes": 5.6705,
                "crosses_total": 0.1892,
                "crosses_accurate": 0.1892,
                "touches": 25.1194,
                "possession_lost": 5.9058,
                "dispossessed": 0.4066,
                "duels_lost": 4.6132,
                "aerial_won": 1.4,
                "aerial_lost": 0.9484,
                "interceptions": 0.2226,
                "tackles_won": 1.3202,
                "tackles": 2.2605,
                "clearances": 1.2023,
                "total_contest": 0.3912,
                "won_contest": 0.2271,
                "challenges_lost": 1.0673,
                "fouls": 2.0183,
                "fouls_drawn": 0.4143,
                "blocks": 0.7101,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9569,
                "total_progression": 22.9555,
                "progressive_carries": 0.2271,
                "shots_off_target": 0.3052,
                "duel_xg_multiplier": 0.7657,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.291,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.4635,
                "expected_assists": 0.0354,
                "assist_rate": 0.052,
                "assists": 0,
                "expected_goals": 0.0352,
                "goal_rate": 0.0468,
                "goals": 0,
                "shots_on_target": 0.1292,
                "total_shots": 0.4344,
                "rating": 6.706,
                "minutes": 71.78,
                "total_pass": 15.9007,
                "accurate_pass": 11.6194,
                "duels_won": 3.9709,
                "total_long_balls": 1.4132,
                "accurate_long_balls": 0.7431,
                "total_own_half_passes": 7.382,
                "accurate_own_half_passes": 5.9488,
                "total_opp_half_passes": 8.5187,
                "accurate_opp_half_passes": 5.6705,
                "crosses_total": 0.1892,
                "crosses_accurate": 0.1892,
                "touches": 25.1194,
                "possession_lost": 5.9058,
                "dispossessed": 0.4066,
                "duels_lost": 4.6132,
                "aerial_won": 1.4,
                "aerial_lost": 0.9484,
                "interceptions": 0.2226,
                "tackles_won": 1.3202,
                "tackles": 2.2605,
                "clearances": 1.2023,
                "total_contest": 0.3912,
                "won_contest": 0.2271,
                "challenges_lost": 1.0673,
                "fouls": 2.0183,
                "fouls_drawn": 0.4143,
                "blocks": 0.7101,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9569,
                "total_progression": 22.9555,
                "progressive_carries": 0.2271,
                "shots_off_target": 0.3052,
                "duel_xg_multiplier": 0.7657,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.291,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "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.1877,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0265,
                  "after": 0.0354
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 71.0)",
              "stats": {
                "key_pass": 0.4635,
                "expected_assists": 0.0354,
                "assist_rate": 0.052,
                "assists": 0,
                "expected_goals": 0.0352,
                "goal_rate": 0.0468,
                "goals": 0,
                "shots_on_target": 0.1292,
                "total_shots": 0.4344,
                "rating": 6.706,
                "minutes": 71.78,
                "total_pass": 15.9007,
                "accurate_pass": 11.6194,
                "duels_won": 3.9709,
                "total_long_balls": 1.4132,
                "accurate_long_balls": 0.7431,
                "total_own_half_passes": 7.382,
                "accurate_own_half_passes": 5.9488,
                "total_opp_half_passes": 8.5187,
                "accurate_opp_half_passes": 5.6705,
                "crosses_total": 0.1892,
                "crosses_accurate": 0.1892,
                "touches": 25.1194,
                "possession_lost": 5.9058,
                "dispossessed": 0.4066,
                "duels_lost": 4.6132,
                "aerial_won": 1.4,
                "aerial_lost": 0.9484,
                "interceptions": 0.2226,
                "tackles_won": 1.3202,
                "tackles": 2.2605,
                "clearances": 1.2023,
                "total_contest": 0.3912,
                "won_contest": 0.2271,
                "challenges_lost": 1.0673,
                "fouls": 2.0183,
                "fouls_drawn": 0.4143,
                "blocks": 0.7101,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9569,
                "total_progression": 22.9555,
                "progressive_carries": 0.2271,
                "shots_off_target": 0.3052,
                "duel_xg_multiplier": 0.7657,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.291,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "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.1877,
                "creation_factor": 1.25,
                "fifa_overall": 71.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": 4478,
                "fifa_rank": 4739.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.4635,
                "expected_assists": 0.0354,
                "assist_rate": 0.052,
                "assists": 0,
                "expected_goals": 0.0352,
                "goal_rate": 0.0468,
                "goals": 0,
                "shots_on_target": 0.1292,
                "total_shots": 0.4344,
                "rating": 6.706,
                "minutes": 71.78,
                "total_pass": 15.9007,
                "accurate_pass": 11.6194,
                "duels_won": 3.9709,
                "total_long_balls": 1.4132,
                "accurate_long_balls": 0.7431,
                "total_own_half_passes": 7.382,
                "accurate_own_half_passes": 5.9488,
                "total_opp_half_passes": 8.5187,
                "accurate_opp_half_passes": 5.6705,
                "crosses_total": 0.1892,
                "crosses_accurate": 0.1892,
                "touches": 25.1194,
                "possession_lost": 5.9058,
                "dispossessed": 0.4066,
                "duels_lost": 4.6132,
                "aerial_won": 1.4,
                "aerial_lost": 0.9484,
                "interceptions": 0.2226,
                "tackles_won": 1.3202,
                "tackles": 2.2605,
                "clearances": 1.2023,
                "total_contest": 0.3912,
                "won_contest": 0.2271,
                "challenges_lost": 1.0673,
                "fouls": 2.0183,
                "fouls_drawn": 0.4143,
                "blocks": 0.7101,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9569,
                "total_progression": 22.9555,
                "progressive_carries": 0.2271,
                "shots_off_target": 0.3052,
                "duel_xg_multiplier": 0.7657,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.291,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0346,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1877,
                "creation_factor": 1.25,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0346,
                "goal_rate": 0.0468,
                "scorer_weight": 0.0418,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0488,
                "finishing_factor": 1.1877,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.4635,
                "expected_assists": 0.0354,
                "assist_rate": 0.052,
                "assists": 0,
                "expected_goals": 0.0352,
                "goal_rate": 0.0468,
                "goals": 0,
                "shots_on_target": 0.1292,
                "total_shots": 0.4344,
                "rating": 6.706,
                "minutes": 71.78,
                "total_pass": 15.9007,
                "accurate_pass": 11.6194,
                "duels_won": 3.9709,
                "total_long_balls": 1.4132,
                "accurate_long_balls": 0.7431,
                "total_own_half_passes": 7.382,
                "accurate_own_half_passes": 5.9488,
                "total_opp_half_passes": 8.5187,
                "accurate_opp_half_passes": 5.6705,
                "crosses_total": 0.1892,
                "crosses_accurate": 0.1892,
                "touches": 25.1194,
                "possession_lost": 5.9058,
                "dispossessed": 0.4066,
                "duels_lost": 4.6132,
                "aerial_won": 1.4,
                "aerial_lost": 0.9484,
                "interceptions": 0.2226,
                "tackles_won": 1.3202,
                "tackles": 2.2605,
                "clearances": 1.2023,
                "total_contest": 0.3912,
                "won_contest": 0.2271,
                "challenges_lost": 1.0673,
                "fouls": 2.0183,
                "fouls_drawn": 0.4143,
                "blocks": 0.7101,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9569,
                "total_progression": 22.9555,
                "progressive_carries": 0.2271,
                "shots_off_target": 0.3052,
                "duel_xg_multiplier": 0.7657,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.291,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0346,
                "projected_assists": 0,
                "assist_probability": 0.0348,
                "finishing_factor": 1.1877,
                "creation_factor": 1.25,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0348,
                "assist_rate": 0.052,
                "provider_weight": 0.0442,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0725,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 14
              }
            }
          ]
        },
        "Tim Iroegbunam": {
          "player_id": 1085950,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 42,
          "height": 182,
          "market_value": 15500000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0517,
            "assist_rate": 0.0539,
            "assists": 0,
            "expected_goals": 0.0835,
            "goal_rate": 0.0545,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7787,
            "minutes": 81,
            "total_pass": 25,
            "accurate_pass": 20,
            "duels_won": 7,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 9,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 12,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 42,
            "possession_lost": 8.8442,
            "dispossessed": 2.0519,
            "duels_lost": 7,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 4,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 1,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0522,
            "ball_carries": 9,
            "total_progression": 36,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8105,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.6,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.321,
            "pressing_faced": "ULTRA_HIGH",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Bruno Guimarães",
            "opponent_faced": "Bruno Guimarães",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0801,
            "projected_assists": 0,
            "assist_probability": 0.0504,
            "finishing_factor": 0.838,
            "creation_factor": 1.1714,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 77,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2751,
                "expected_assists": 0.0964,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 13,
                "tackles": 6,
                "tackles_won": 2,
                "interceptions": 0,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 10,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 72,
                "rating": 7.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0287,
                "expected_assists": 0.0189,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 21,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 0,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 5,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0109,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 5,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 25,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0063,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1173,
                "expected_assists": 0.0122,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 21,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363247.0,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023967.0,
              "match_date": "2026-05-24",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 84,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0055,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 22,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023955.0,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 73,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0422,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 26,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937.0,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0425,
                "expected_assists": 0.0175,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 33,
                "accurate_pass": 26,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "aerial_won": 5,
                "duels_won": 11,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986.0",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3277,
            "combined_rank_score": 1220.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 640.0,
            "sofascore_rating": 6.7519,
            "sofascore_appearances": 29.0,
            "fifa_rank": 1801.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7787,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tim Iroegbunam",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Marco Reus",
                  "ranking": 3272
                },
                {
                  "player_name": "Santiago Bueno",
                  "ranking": 3273
                },
                {
                  "player_name": "Hany Mukhtar",
                  "ranking": 3274
                },
                {
                  "player_name": "Aleksey Miranchuk",
                  "ranking": 3275
                },
                {
                  "player_name": "Alfonso Herrero",
                  "ranking": 3276
                }
              ],
              "lower": [
                {
                  "player_name": "Jaminton Campaz",
                  "ranking": 3278
                },
                {
                  "player_name": "Miguel Merentiel",
                  "ranking": 3279
                },
                {
                  "player_name": "Pep Biel",
                  "ranking": 3280
                },
                {
                  "player_name": "Beñat Prados",
                  "ranking": 3281
                },
                {
                  "player_name": "Zlatko Tripić",
                  "ranking": 3282
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 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.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0029,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 36 historical appearances across 8 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.5226,
                "expected_assists": 0.0386,
                "assists": 0.0537,
                "assist_rate": 0.0537,
                "expected_goals": 0.0919,
                "goals": 0.0671,
                "goal_rate": 0.0671,
                "shots_on_target": 0.3217,
                "total_shots": 1.1458,
                "rating": 6.7787,
                "minutes": 80.77,
                "total_pass": 24.7399,
                "accurate_pass": 20.2458,
                "duels_won": 7.4053,
                "total_long_balls": 0.9487,
                "accurate_long_balls": 0.5446,
                "total_own_half_passes": 8.9955,
                "accurate_own_half_passes": 7.7848,
                "total_opp_half_passes": 15.7444,
                "accurate_opp_half_passes": 12.461,
                "crosses_total": 0.2161,
                "crosses_accurate": 0.0,
                "touches": 41.5188,
                "possession_lost": 8.8186,
                "dispossessed": 2.046,
                "duels_lost": 6.5023,
                "aerial_won": 1.1177,
                "aerial_lost": 1.0071,
                "interceptions": 1.1395,
                "tackles_won": 2.412,
                "tackles": 4.0678,
                "clearances": 0.6121,
                "total_contest": 1.7346,
                "won_contest": 0.7405,
                "challenges_lost": 0.8557,
                "fouls": 1.6078,
                "fouls_drawn": 1.4792,
                "blocks": 0.6695,
                "big_chances_created": 0.0829,
                "big_chances_missed": 0.0,
                "xgot": 0.0574,
                "ball_carries": 9.4183,
                "total_progression": 36.0501,
                "progressive_carries": 0.8068,
                "shots_off_target": 0.8241
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.1087,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0924,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0785,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.7246,
                  "creative_index": 0.0902,
                  "expectedGoals": 0.0606,
                  "expectedAssists": 0.0259,
                  "keyPass": 0.1865
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5225605368614197,
                    "model_output": 0.5226,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1265
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0862
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0846
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0757
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0387
                        }
                      ],
                      "others": -0.1251,
                      "total": 0.5226,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.153232
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.119727
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.11762
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.104619
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.05802
                        }
                      ],
                      "others_margin": -0.214739
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.038557056337594986,
                    "model_output": 0.0386,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0193
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0133
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0066
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0034
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0141,
                      "total": 0.0386,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.25893
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.228474
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118841
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.059381
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.049199
                        }
                      ],
                      "others_margin": -0.30955
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.05370583385229111,
                    "model_output": 0.0537,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0077
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.006
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.006
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0047
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0034
                        }
                      ],
                      "others": -0.0156,
                      "total": 0.0537,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.094901
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.08109
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.080698
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.062621
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.047392
                        }
                      ],
                      "others_margin": -0.255454
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.09193746000528336,
                    "model_output": 0.0919,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.013
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0075
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0065
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0034
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0023
                        }
                      ],
                      "others": -0.0,
                      "total": 0.0919,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.132196
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.074263
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.068633
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.036465
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.024426
                        }
                      ],
                      "others_margin": -2.3e-05
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06714042276144028,
                    "model_output": 0.0671,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.014
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0105
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0047
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0037
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.0126,
                      "total": 0.0671,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.159674
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122881
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.052873
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.043924
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.037243
                        }
                      ],
                      "others_margin": -0.171751
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.3217431604862213,
                    "model_output": 0.3217,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0496
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.027
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": 0.0072
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0055
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0053
                        }
                      ],
                      "others": -0.0152,
                      "total": 0.3217,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.144899
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.07638
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": 0.021027
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.01591
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.01567
                        }
                      ],
                      "others_margin": -0.045881
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.1458179950714111,
                    "model_output": 1.1458,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1551
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0866
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0299
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0218
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0182
                        }
                      ],
                      "others": 0.0661,
                      "total": 1.1458,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.155137
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.086582
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.029877
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.021775
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.018216
                        }
                      ],
                      "others_margin": 0.066009
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.778728008270264,
                    "model_output": 6.7787,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0455
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.029
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.013
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0109
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0104
                        }
                      ],
                      "others": -0.0279,
                      "total": 6.7787,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.045545
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.028985
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.013019
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.010885
                        },
                        {
                          "name": "rating",
                          "margin": -0.010375
                        }
                      ],
                      "others_margin": -0.027838
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 36,
                  "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.0029, quality 0.585)",
              "stats": {
                "key_pass": 0.5241,
                "expected_assists": 0.0387,
                "assists": 0.0539,
                "assist_rate": 0.0539,
                "expected_goals": 0.0922,
                "goals": 0.0673,
                "goal_rate": 0.0673,
                "shots_on_target": 0.3227,
                "total_shots": 1.1492,
                "rating": 6.7787,
                "minutes": 80.77,
                "total_pass": 24.8116,
                "accurate_pass": 20.3045,
                "duels_won": 7.4268,
                "total_long_balls": 0.9515,
                "accurate_long_balls": 0.5462,
                "total_own_half_passes": 9.0216,
                "accurate_own_half_passes": 7.8074,
                "total_opp_half_passes": 15.7901,
                "accurate_opp_half_passes": 12.4971,
                "crosses_total": 0.2167,
                "crosses_accurate": 0.0,
                "touches": 41.6392,
                "possession_lost": 8.8442,
                "dispossessed": 2.0519,
                "duels_lost": 6.5212,
                "aerial_won": 1.1209,
                "aerial_lost": 1.01,
                "interceptions": 1.1428,
                "tackles_won": 2.419,
                "tackles": 4.0796,
                "clearances": 0.6139,
                "total_contest": 1.7396,
                "won_contest": 0.7426,
                "challenges_lost": 0.8582,
                "fouls": 1.6125,
                "fouls_drawn": 1.4835,
                "blocks": 0.6714,
                "big_chances_created": 0.0831,
                "big_chances_missed": 0.0,
                "xgot": 0.0576,
                "ball_carries": 9.4456,
                "total_progression": 36.1546,
                "progressive_carries": 0.8091,
                "shots_off_target": 0.8265
              },
              "params": {
                "market_value_eur": 15500000,
                "quality_factor": 0.5846,
                "boost_factor": 1.0029,
                "reference_quality": 0.505,
                "history_matches": 36,
                "history_shrink": 0.122,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5241,
                "expected_assists": 0.0387,
                "assists": 0.0539,
                "assist_rate": 0.0539,
                "expected_goals": 0.0922,
                "goals": 0.0673,
                "goal_rate": 0.0673,
                "shots_on_target": 0.3227,
                "total_shots": 1.1492,
                "rating": 6.7787,
                "minutes": 80.77,
                "total_pass": 24.8116,
                "accurate_pass": 20.3045,
                "duels_won": 7.4268,
                "total_long_balls": 0.9515,
                "accurate_long_balls": 0.5462,
                "total_own_half_passes": 9.0216,
                "accurate_own_half_passes": 7.8074,
                "total_opp_half_passes": 15.7901,
                "accurate_opp_half_passes": 12.4971,
                "crosses_total": 0.2167,
                "crosses_accurate": 0.0,
                "touches": 41.6392,
                "possession_lost": 8.8442,
                "dispossessed": 2.0519,
                "duels_lost": 6.5212,
                "aerial_won": 1.1209,
                "aerial_lost": 1.01,
                "interceptions": 1.1428,
                "tackles_won": 2.419,
                "tackles": 4.0796,
                "clearances": 0.6139,
                "total_contest": 1.7396,
                "won_contest": 0.7426,
                "challenges_lost": 0.8582,
                "fouls": 1.6125,
                "fouls_drawn": 1.4835,
                "blocks": 0.6714,
                "big_chances_created": 0.0831,
                "big_chances_missed": 0.0,
                "xgot": 0.0576,
                "ball_carries": 9.4456,
                "total_progression": 36.1546,
                "progressive_carries": 0.8091,
                "shots_off_target": 0.8265
              },
              "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.5241,
                "expected_assists": 0.0387,
                "assists": 0.0539,
                "assist_rate": 0.0539,
                "expected_goals": 0.0747,
                "goals": 0.0545,
                "goal_rate": 0.0545,
                "shots_on_target": 0.2615,
                "total_shots": 0.9314,
                "rating": 6.7787,
                "minutes": 80.77,
                "total_pass": 24.8116,
                "accurate_pass": 20.3045,
                "duels_won": 7.4268,
                "total_long_balls": 0.9515,
                "accurate_long_balls": 0.5462,
                "total_own_half_passes": 9.0216,
                "accurate_own_half_passes": 7.8074,
                "total_opp_half_passes": 15.7901,
                "accurate_opp_half_passes": 12.4971,
                "crosses_total": 0.2167,
                "crosses_accurate": 0.0,
                "touches": 41.6392,
                "possession_lost": 8.8442,
                "dispossessed": 2.0519,
                "duels_lost": 6.5212,
                "aerial_won": 1.1,
                "aerial_lost": 1.01,
                "interceptions": 1.1428,
                "tackles_won": 2.419,
                "tackles": 4.0796,
                "clearances": 0.6139,
                "total_contest": 1.7396,
                "won_contest": 0.7426,
                "challenges_lost": 0.8582,
                "fouls": 1.6125,
                "fouls_drawn": 1.4835,
                "blocks": 0.6714,
                "big_chances_created": 0.0831,
                "big_chances_missed": 0.0,
                "xgot": 0.0467,
                "ball_carries": 9.4456,
                "total_progression": 36.1546,
                "progressive_carries": 0.8091,
                "shots_off_target": 0.6699,
                "duel_xg_multiplier": 0.8105,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.321,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Bruno Guimarães",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.321,
                  "pressing_faced": "ULTRA_HIGH",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.8105,
                  "skill_edge": -0.1289,
                  "height_edge": 0.0,
                  "attacker_skill": 0.6029,
                  "defender_skill": 0.8893,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Bruno Guimarães",
                      "market_value": 77000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.8893
                    }
                  ],
                  "xg_override": 0.0747
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.1492,
                  "after": 0.9314
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.8265,
                  "after": 0.6699
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3227,
                  "after": 0.2615
                },
                {
                  "stat": "aerialWon",
                  "before": 1.1209,
                  "after": 1.1
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0922,
                  "after": 0.0747
                },
                {
                  "stat": "goals",
                  "before": 0.0673,
                  "after": 0.0545
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0576,
                  "after": 0.0467
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.5241,
                "expected_assists": 0.0387,
                "assist_rate": 0.0539,
                "assists": 0,
                "expected_goals": 0.0747,
                "goal_rate": 0.0545,
                "goals": 0,
                "shots_on_target": 0.2615,
                "total_shots": 0.9314,
                "rating": 6.7787,
                "minutes": 80.77,
                "total_pass": 24.8116,
                "accurate_pass": 20.3045,
                "duels_won": 7.4268,
                "total_long_balls": 0.9515,
                "accurate_long_balls": 0.5462,
                "total_own_half_passes": 9.0216,
                "accurate_own_half_passes": 7.8074,
                "total_opp_half_passes": 15.7901,
                "accurate_opp_half_passes": 12.4971,
                "crosses_total": 0.2167,
                "crosses_accurate": 0.0,
                "touches": 41.6392,
                "possession_lost": 8.8442,
                "dispossessed": 2.0519,
                "duels_lost": 6.5212,
                "aerial_won": 1.1,
                "aerial_lost": 1.01,
                "interceptions": 1.1428,
                "tackles_won": 2.419,
                "tackles": 4.0796,
                "clearances": 0.6139,
                "total_contest": 1.7396,
                "won_contest": 0.7426,
                "challenges_lost": 0.8582,
                "fouls": 1.6125,
                "fouls_drawn": 1.4835,
                "blocks": 0.6714,
                "big_chances_created": 0.0831,
                "big_chances_missed": 0.0,
                "xgot": 0.0467,
                "ball_carries": 9.4456,
                "total_progression": 36.1546,
                "progressive_carries": 0.8091,
                "shots_off_target": 0.6699,
                "duel_xg_multiplier": 0.8105,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.321,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5241,
                "expected_assists": 0.0517,
                "assist_rate": 0.0539,
                "assists": 0,
                "expected_goals": 0.0835,
                "goal_rate": 0.0545,
                "goals": 0,
                "shots_on_target": 0.2615,
                "total_shots": 0.9314,
                "rating": 6.7787,
                "minutes": 80.77,
                "total_pass": 24.8116,
                "accurate_pass": 20.3045,
                "duels_won": 7.4268,
                "total_long_balls": 0.9515,
                "accurate_long_balls": 0.5462,
                "total_own_half_passes": 9.0216,
                "accurate_own_half_passes": 7.8074,
                "total_opp_half_passes": 15.7901,
                "accurate_opp_half_passes": 12.4971,
                "crosses_total": 0.2167,
                "crosses_accurate": 0.0,
                "touches": 41.6392,
                "possession_lost": 8.8442,
                "dispossessed": 2.0519,
                "duels_lost": 6.5212,
                "aerial_won": 1.1,
                "aerial_lost": 1.01,
                "interceptions": 1.1428,
                "tackles_won": 2.419,
                "tackles": 4.0796,
                "clearances": 0.6139,
                "total_contest": 1.7396,
                "won_contest": 0.7426,
                "challenges_lost": 0.8582,
                "fouls": 1.6125,
                "fouls_drawn": 1.4835,
                "blocks": 0.6714,
                "big_chances_created": 0.0831,
                "big_chances_missed": 0.0,
                "xgot": 0.0522,
                "ball_carries": 9.4456,
                "total_progression": 36.1546,
                "progressive_carries": 0.8091,
                "shots_off_target": 0.6699,
                "duel_xg_multiplier": 0.8105,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.321,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.838,
                "creation_factor": 1.1714
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0747,
                  "after": 0.0835
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0387,
                  "after": 0.0517
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 76.0)",
              "stats": {
                "key_pass": 0.5241,
                "expected_assists": 0.0517,
                "assist_rate": 0.0539,
                "assists": 0,
                "expected_goals": 0.0835,
                "goal_rate": 0.0545,
                "goals": 0,
                "shots_on_target": 0.2615,
                "total_shots": 0.9314,
                "rating": 6.7787,
                "minutes": 80.77,
                "total_pass": 24.8116,
                "accurate_pass": 20.3045,
                "duels_won": 7.4268,
                "total_long_balls": 0.9515,
                "accurate_long_balls": 0.5462,
                "total_own_half_passes": 9.0216,
                "accurate_own_half_passes": 7.8074,
                "total_opp_half_passes": 15.7901,
                "accurate_opp_half_passes": 12.4971,
                "crosses_total": 0.2167,
                "crosses_accurate": 0.0,
                "touches": 41.6392,
                "possession_lost": 8.8442,
                "dispossessed": 2.0519,
                "duels_lost": 6.5212,
                "aerial_won": 1.1,
                "aerial_lost": 1.01,
                "interceptions": 1.1428,
                "tackles_won": 2.419,
                "tackles": 4.0796,
                "clearances": 0.6139,
                "total_contest": 1.7396,
                "won_contest": 0.7426,
                "challenges_lost": 0.8582,
                "fouls": 1.6125,
                "fouls_drawn": 1.4835,
                "blocks": 0.6714,
                "big_chances_created": 0.0831,
                "big_chances_missed": 0.0,
                "xgot": 0.0522,
                "ball_carries": 9.4456,
                "total_progression": 36.1546,
                "progressive_carries": 0.8091,
                "shots_off_target": 0.6699,
                "duel_xg_multiplier": 0.8105,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.321,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.838,
                "creation_factor": 1.1714,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3277,
                "fifa_rank": 1801.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.5241,
                "expected_assists": 0.0517,
                "assist_rate": 0.0539,
                "assists": 0,
                "expected_goals": 0.0835,
                "goal_rate": 0.0545,
                "goals": 0,
                "shots_on_target": 0.2615,
                "total_shots": 0.9314,
                "rating": 6.7787,
                "minutes": 80.77,
                "total_pass": 24.8116,
                "accurate_pass": 20.3045,
                "duels_won": 7.4268,
                "total_long_balls": 0.9515,
                "accurate_long_balls": 0.5462,
                "total_own_half_passes": 9.0216,
                "accurate_own_half_passes": 7.8074,
                "total_opp_half_passes": 15.7901,
                "accurate_opp_half_passes": 12.4971,
                "crosses_total": 0.2167,
                "crosses_accurate": 0.0,
                "touches": 41.6392,
                "possession_lost": 8.8442,
                "dispossessed": 2.0519,
                "duels_lost": 6.5212,
                "aerial_won": 1.1,
                "aerial_lost": 1.01,
                "interceptions": 1.1428,
                "tackles_won": 2.419,
                "tackles": 4.0796,
                "clearances": 0.6139,
                "total_contest": 1.7396,
                "won_contest": 0.7426,
                "challenges_lost": 0.8582,
                "fouls": 1.6125,
                "fouls_drawn": 1.4835,
                "blocks": 0.6714,
                "big_chances_created": 0.0831,
                "big_chances_missed": 0.0,
                "xgot": 0.0522,
                "ball_carries": 9.4456,
                "total_progression": 36.1546,
                "progressive_carries": 0.8091,
                "shots_off_target": 0.6699,
                "duel_xg_multiplier": 0.8105,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.321,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0801,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.838,
                "creation_factor": 1.1714,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0801,
                "goal_rate": 0.0545,
                "scorer_weight": 0.07,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0818,
                "finishing_factor": 0.838,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.5241,
                "expected_assists": 0.0517,
                "assist_rate": 0.0539,
                "assists": 0,
                "expected_goals": 0.0835,
                "goal_rate": 0.0545,
                "goals": 0,
                "shots_on_target": 0.2615,
                "total_shots": 0.9314,
                "rating": 6.7787,
                "minutes": 80.77,
                "total_pass": 24.8116,
                "accurate_pass": 20.3045,
                "duels_won": 7.4268,
                "total_long_balls": 0.9515,
                "accurate_long_balls": 0.5462,
                "total_own_half_passes": 9.0216,
                "accurate_own_half_passes": 7.8074,
                "total_opp_half_passes": 15.7901,
                "accurate_opp_half_passes": 12.4971,
                "crosses_total": 0.2167,
                "crosses_accurate": 0.0,
                "touches": 41.6392,
                "possession_lost": 8.8442,
                "dispossessed": 2.0519,
                "duels_lost": 6.5212,
                "aerial_won": 1.1,
                "aerial_lost": 1.01,
                "interceptions": 1.1428,
                "tackles_won": 2.419,
                "tackles": 4.0796,
                "clearances": 0.6139,
                "total_contest": 1.7396,
                "won_contest": 0.7426,
                "challenges_lost": 0.8582,
                "fouls": 1.6125,
                "fouls_drawn": 1.4835,
                "blocks": 0.6714,
                "big_chances_created": 0.0831,
                "big_chances_missed": 0.0,
                "xgot": 0.0522,
                "ball_carries": 9.4456,
                "total_progression": 36.1546,
                "progressive_carries": 0.8091,
                "shots_off_target": 0.6699,
                "duel_xg_multiplier": 0.8105,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.321,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Bruno Guimarães",
                "opponent_faced": "Bruno Guimarães",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0801,
                "projected_assists": 0,
                "assist_probability": 0.0504,
                "finishing_factor": 0.838,
                "creation_factor": 1.1714,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0504,
                "assist_rate": 0.0539,
                "provider_weight": 0.0606,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0992,
                "creation_factor": 1.1714,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 14
              }
            }
          ]
        },
        "Oliver McBurnie": {
          "player_id": 367228,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 188,
          "market_value": 7600000,
          "stats": {
            "expected_goals": 0.2495,
            "goal_rate": 0.2461,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0418,
            "key_pass": 1,
            "rating": 6.8402,
            "minutes": 87,
            "total_pass": 17,
            "accurate_pass": 9,
            "duels_won": 7,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 28,
            "possession_lost": 10.916,
            "dispossessed": 0.8695,
            "duels_lost": 8,
            "aerial_lost": 5,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "assist_rate": 0.2728,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1901,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 18,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.7145,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "ULTRA_HIGH",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "William Saliba, Gabriel Magalhães",
            "opponent_faced": "William Saliba, Gabriel Magalhães",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.2208,
            "projected_assists": 0,
            "assist_probability": 0.0409,
            "finishing_factor": 1.0838,
            "creation_factor": 1.25,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1972,
                "expected_assists": 0.0054,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 2,
                "aerial_won": 5,
                "duels_won": 8,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 86,
                "rating": 7.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7884,
                "expected_assists": 0.0141,
                "total_shots": 1,
                "shots_on_target": 1,
                "shots_off_target": 0,
                "total_pass": 16,
                "accurate_pass": 7,
                "key_pass": 1,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 1,
                "clearances": 0,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 5,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0885,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 1,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3644,
                "expected_assists": 0.02,
                "total_shots": 4,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 15,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 5,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 82,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.3297,
                "expected_assists": 0.0443,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3823,
                "expected_assists": 0.0505,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 15,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 2,
                "clearances": 1,
                "aerial_won": 9,
                "duels_won": 13
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0129,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 10,
                "key_pass": 1,
                "aerial_won": 5,
                "duels_won": 9,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1558,
                "expected_assists": 0.0114,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 18,
                "accurate_pass": 11,
                "key_pass": 2,
                "clearances": 3,
                "aerial_won": 4,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3569,
            "combined_rank_score": 1531.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 873.0,
            "sofascore_rating": 6.55,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2189.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8402,
            "source_file": "data/player_rankings.csv",
            "player_name": "Oli McBurnie",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Koni De Winter",
                  "ranking": 3564
                },
                {
                  "player_name": "Luis Henrique",
                  "ranking": 3565
                },
                {
                  "player_name": "Lorenzo Lucca",
                  "ranking": 3566
                },
                {
                  "player_name": "Neil El Aynaoui",
                  "ranking": 3567
                },
                {
                  "player_name": "Santiago Castro",
                  "ranking": 3568
                }
              ],
              "lower": [
                {
                  "player_name": "Philip Zinckernagel",
                  "ranking": 3570
                },
                {
                  "player_name": "Cristian Roldan",
                  "ranking": 3571
                },
                {
                  "player_name": "Joaquín Pereyra",
                  "ranking": 3572
                },
                {
                  "player_name": "Moise Bombito",
                  "ranking": 3573
                },
                {
                  "player_name": "Germán Berterame",
                  "ranking": 3574
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 9,
          "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": 9,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9988,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.0,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (F_service) evaluated 9 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3128,
                "goals": 0.3559,
                "goal_rate": 0.3559,
                "shots_on_target": 0.7021,
                "total_shots": 1.931,
                "expected_assists": 0.0314,
                "key_pass": 0.6143,
                "rating": 6.8402,
                "minutes": 87.07,
                "total_pass": 16.6932,
                "accurate_pass": 9.0488,
                "duels_won": 7.0071,
                "total_long_balls": 0.7809,
                "accurate_long_balls": 0.4951,
                "total_opp_half_passes": 12.2991,
                "accurate_opp_half_passes": 6.0551,
                "crosses_total": 0.1659,
                "crosses_accurate": 0.0,
                "touches": 27.9998,
                "possession_lost": 10.9291,
                "dispossessed": 0.8705,
                "duels_lost": 8.068,
                "aerial_lost": 5.1057,
                "total_contest": 1.3062,
                "won_contest": 1.0261,
                "ball_recovery": 2.1464,
                "challenges_lost": 0.5734,
                "fouls": 1.2383,
                "fouls_drawn": 1.6194,
                "assists": 0.2818,
                "assist_rate": 0.2818,
                "interceptions": 0.2678,
                "tackles_won": 0.0866,
                "tackles": 0.3538,
                "clearances": 1.0007,
                "blocks": 0.3363,
                "big_chances_created": 0.1952,
                "big_chances_missed": 0.2134,
                "xgot": 0.2383,
                "offsides": 0.1952,
                "ball_carries": 6.2423,
                "total_progression": 17.9725,
                "progressive_carries": 0.7077,
                "shots_off_target": 1.2289
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:06:26.876327+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 612,
                    "rows": 17180
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 8.4
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.1659,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.141,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1199,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0736,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0532,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 1.0,
                  "accuratePass": 9.0488,
                  "expectedGoals": 0.2714,
                  "accurateOppositionHalfPasses": 6.0551,
                  "totalShots": 1.3779,
                  "totalOppositionHalfPasses": 12.2991
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.3128216564655304,
                    "model_output": 0.3128,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2767
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0987
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.036
                      },
                      {
                        "name": "goals",
                        "importance": 0.0336
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.1929,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0617
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0234
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0198
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0105
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0094
                        }
                      ],
                      "others": -0.0049,
                      "total": 0.3128,
                      "log_link": true,
                      "margin_base": -1.645586,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.277613
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.087846
                        },
                        {
                          "name": "goals",
                          "margin": 0.068855
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.034555
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.030133
                        }
                      ],
                      "others_margin": -0.015538
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.35594600439071655,
                    "model_output": 0.3559,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1491
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0805
                      },
                      {
                        "name": "goals",
                        "importance": 0.056
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0343
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.1972,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0639
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0324
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0243
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0237
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0237
                        }
                      ],
                      "others": -0.0093,
                      "total": 0.3559,
                      "log_link": true,
                      "margin_base": -1.623746,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.280738
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.116833
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.079597
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.071979
                        },
                        {
                          "name": "goals",
                          "margin": 0.066989
                        }
                      ],
                      "others_margin": -0.025366
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7021118402481079,
                    "model_output": 0.7021,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2173
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0637
                      },
                      {
                        "name": "goals",
                        "importance": 0.0596
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0393
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.5269,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1749
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0357
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0324
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0292
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0266
                        }
                      ],
                      "others": -0.0522,
                      "total": 0.7021,
                      "log_link": true,
                      "margin_base": -0.640773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.286693
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.052174
                        },
                        {
                          "name": "goals",
                          "margin": 0.047538
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.041005
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.035911
                        }
                      ],
                      "others_margin": -0.071863
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.9310476779937744,
                    "model_output": 1.931,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3005
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0627
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0526
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0309
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0307
                      }
                    ],
                    "decomposition": {
                      "base": 1.3756,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4783
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0636
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0574
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0492
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0436
                        }
                      ],
                      "others": 0.0777,
                      "total": 1.931,
                      "log_link": false,
                      "margin_base": 1.375643,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.478264
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.063587
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.057412
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.049218
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.043647
                        }
                      ],
                      "others_margin": 0.077744
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0313587449491024,
                    "model_output": 0.0314,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1287
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1119
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0634
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0522
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.051
                      }
                    ],
                    "decomposition": {
                      "base": 0.065,
                      "items": [
                        {
                          "name": "touches_p90",
                          "contribution": -0.0097
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0088
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0085
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0073
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0119,
                      "total": 0.0314,
                      "log_link": true,
                      "margin_base": -2.733324,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": -0.161917
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.147101
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.141763
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.14118
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.109324
                        }
                      ],
                      "others_margin": -0.321855
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.614305853843689,
                    "model_output": 0.6143,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1579
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1341
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0953
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.069
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.6917,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1678
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0623
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0532
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0441
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.036
                        }
                      ],
                      "others": -0.0496,
                      "total": 0.6143,
                      "log_link": true,
                      "margin_base": -0.368585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.217215
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.075248
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.069091
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.061075
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.05281
                        }
                      ],
                      "others_margin": -0.07767
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.840206623077393,
                    "model_output": 6.8402,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.048
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0462
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0455
                      },
                      {
                        "name": "rating",
                        "importance": 0.0455
                      }
                    ],
                    "decomposition": {
                      "base": 6.7733,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0539
                        },
                        {
                          "name": "rating",
                          "contribution": 0.028
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0257
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0235
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0173
                        }
                      ],
                      "others": -0.0345,
                      "total": 6.8402,
                      "log_link": false,
                      "margin_base": 6.773334,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.053852
                        },
                        {
                          "name": "rating",
                          "margin": 0.027973
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.025668
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.023526
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.017262
                        }
                      ],
                      "others_margin": -0.034356
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 9,
                  "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.9988, quality 0.494)",
              "stats": {
                "expected_goals": 0.3124,
                "goals": 0.3555,
                "goal_rate": 0.3555,
                "shots_on_target": 0.7013,
                "total_shots": 1.9287,
                "expected_assists": 0.0313,
                "key_pass": 0.6136,
                "rating": 6.8402,
                "minutes": 87.07,
                "total_pass": 16.6732,
                "accurate_pass": 9.0379,
                "duels_won": 6.9987,
                "total_long_balls": 0.78,
                "accurate_long_balls": 0.4945,
                "total_opp_half_passes": 12.2843,
                "accurate_opp_half_passes": 6.0478,
                "crosses_total": 0.1657,
                "crosses_accurate": 0.0,
                "touches": 27.9662,
                "possession_lost": 10.916,
                "dispossessed": 0.8695,
                "duels_lost": 8.0583,
                "aerial_lost": 5.0996,
                "total_contest": 1.3046,
                "won_contest": 1.0249,
                "ball_recovery": 2.1438,
                "challenges_lost": 0.5727,
                "fouls": 1.2368,
                "fouls_drawn": 1.6175,
                "assists": 0.2815,
                "assist_rate": 0.2815,
                "interceptions": 0.2675,
                "tackles_won": 0.0865,
                "tackles": 0.3534,
                "clearances": 0.9995,
                "blocks": 0.3359,
                "big_chances_created": 0.195,
                "big_chances_missed": 0.2131,
                "xgot": 0.238,
                "offsides": 0.195,
                "ball_carries": 6.2348,
                "total_progression": 17.9509,
                "progressive_carries": 0.7069,
                "shots_off_target": 1.2274
              },
              "params": {
                "market_value_eur": 7600000,
                "quality_factor": 0.4939,
                "boost_factor": 0.9988,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0309)",
              "stats": {
                "expected_goals": 0.3124,
                "goals": 0.3445,
                "goal_rate": 0.3445,
                "shots_on_target": 0.7095,
                "total_shots": 1.899,
                "expected_assists": 0.0313,
                "key_pass": 0.6136,
                "rating": 6.8402,
                "minutes": 87.07,
                "total_pass": 16.6732,
                "accurate_pass": 9.0379,
                "duels_won": 6.9987,
                "total_long_balls": 0.78,
                "accurate_long_balls": 0.4945,
                "total_opp_half_passes": 12.2843,
                "accurate_opp_half_passes": 6.0478,
                "crosses_total": 0.1606,
                "crosses_accurate": 0.0,
                "touches": 27.9662,
                "possession_lost": 10.916,
                "dispossessed": 0.8695,
                "duels_lost": 8.0583,
                "aerial_lost": 5.0996,
                "total_contest": 1.3046,
                "won_contest": 1.0249,
                "ball_recovery": 2.1438,
                "challenges_lost": 0.5727,
                "fouls": 1.2434,
                "fouls_drawn": 1.6423,
                "assists": 0.2728,
                "assist_rate": 0.2728,
                "interceptions": 0.2592,
                "tackles_won": 0.0838,
                "tackles": 0.3534,
                "clearances": 0.9995,
                "blocks": 0.3359,
                "big_chances_created": 0.195,
                "big_chances_missed": 0.2131,
                "xgot": 0.238,
                "offsides": 0.189,
                "ball_carries": 6.2348,
                "total_progression": 17.9509,
                "progressive_carries": 0.7069,
                "shots_off_target": 1.2274
              },
              "params": {
                "blend_weight": 0.0309,
                "history_matches": 9,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9674,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.9287,
                  "after": 1.899
                },
                {
                  "stat": "wasFouled",
                  "before": 1.6175,
                  "after": 1.6423
                },
                {
                  "stat": "goals",
                  "before": 0.3555,
                  "after": 0.3445
                },
                {
                  "stat": "goalAssist",
                  "before": 0.2815,
                  "after": 0.2728
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.2675,
                  "after": 0.2592
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7013,
                  "after": 0.7095
                },
                {
                  "stat": "fouls",
                  "before": 1.2368,
                  "after": 1.2434
                },
                {
                  "stat": "totalOffside",
                  "before": 0.195,
                  "after": 0.189
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3124,
                "goals": 0.3445,
                "goal_rate": 0.3445,
                "shots_on_target": 0.7095,
                "total_shots": 1.9369,
                "expected_assists": 0.0313,
                "key_pass": 0.6136,
                "rating": 6.8402,
                "minutes": 87.07,
                "total_pass": 16.6732,
                "accurate_pass": 9.0379,
                "duels_won": 6.9987,
                "total_long_balls": 0.78,
                "accurate_long_balls": 0.4945,
                "total_opp_half_passes": 12.2843,
                "accurate_opp_half_passes": 6.0478,
                "crosses_total": 0.1606,
                "crosses_accurate": 0.0,
                "touches": 27.9662,
                "possession_lost": 10.916,
                "dispossessed": 0.8695,
                "duels_lost": 8.0583,
                "aerial_lost": 5.0996,
                "total_contest": 1.3046,
                "won_contest": 1.0249,
                "ball_recovery": 2.1438,
                "challenges_lost": 0.5727,
                "fouls": 1.2434,
                "fouls_drawn": 1.6423,
                "assists": 0.2728,
                "assist_rate": 0.2728,
                "interceptions": 0.2592,
                "tackles_won": 0.0838,
                "tackles": 0.3534,
                "clearances": 0.9995,
                "blocks": 0.3359,
                "big_chances_created": 0.195,
                "big_chances_missed": 0.2131,
                "xgot": 0.238,
                "offsides": 0.189,
                "ball_carries": 6.2348,
                "total_progression": 17.9509,
                "progressive_carries": 0.7069,
                "shots_off_target": 1.2274
              },
              "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.2232,
                "goals": 0.2461,
                "goal_rate": 0.2461,
                "shots_on_target": 0.5069,
                "total_shots": 1.3839,
                "expected_assists": 0.0313,
                "key_pass": 0.6136,
                "rating": 6.8402,
                "minutes": 87.07,
                "total_pass": 16.6732,
                "accurate_pass": 9.0379,
                "duels_won": 6.9987,
                "total_long_balls": 0.78,
                "accurate_long_balls": 0.4945,
                "total_opp_half_passes": 12.2843,
                "accurate_opp_half_passes": 6.0478,
                "crosses_total": 0.1606,
                "crosses_accurate": 0.0,
                "touches": 27.9662,
                "possession_lost": 10.916,
                "dispossessed": 0.8695,
                "duels_lost": 8.0583,
                "aerial_lost": 5.0996,
                "total_contest": 1.3046,
                "won_contest": 1.0249,
                "ball_recovery": 2.1438,
                "challenges_lost": 0.5727,
                "fouls": 1.2434,
                "fouls_drawn": 1.6423,
                "assists": 0.2728,
                "assist_rate": 0.2728,
                "interceptions": 0.2592,
                "tackles_won": 0.0838,
                "tackles": 0.3534,
                "clearances": 0.9995,
                "blocks": 0.3359,
                "big_chances_created": 0.195,
                "big_chances_missed": 0.1523,
                "xgot": 0.1701,
                "offsides": 0.189,
                "ball_carries": 6.2348,
                "total_progression": 17.9509,
                "progressive_carries": 0.7069,
                "shots_off_target": 0.877,
                "duel_xg_multiplier": 0.7145,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "William Saliba, Gabriel Magalhães",
                "opponent_faced": "William Saliba, Gabriel Magalhães",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "William Saliba, Gabriel Magalhães",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "ULTRA_HIGH",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.7145,
                  "skill_edge": -0.1802,
                  "height_edge": -0.014,
                  "attacker_skill": 0.4939,
                  "defender_skill": 0.8944,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "William Saliba",
                      "market_value": 94000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.8981
                    },
                    {
                      "player": "Gabriel Magalhães",
                      "market_value": 70000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.8907
                    }
                  ],
                  "xg_override": 0.2232
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.9369,
                  "after": 1.3839
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2274,
                  "after": 0.877
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7095,
                  "after": 0.5069
                },
                {
                  "stat": "goals",
                  "before": 0.3445,
                  "after": 0.2461
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3124,
                  "after": 0.2232
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.238,
                  "after": 0.1701
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2131,
                  "after": 0.1523
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.2232,
                "goal_rate": 0.2461,
                "goals": 0,
                "shots_on_target": 0.5069,
                "total_shots": 1.3839,
                "expected_assists": 0.0313,
                "key_pass": 0.6136,
                "rating": 6.8402,
                "minutes": 87.07,
                "total_pass": 16.6732,
                "accurate_pass": 9.0379,
                "duels_won": 6.9987,
                "total_long_balls": 0.78,
                "accurate_long_balls": 0.4945,
                "total_opp_half_passes": 12.2843,
                "accurate_opp_half_passes": 6.0478,
                "crosses_total": 0.1606,
                "crosses_accurate": 0.0,
                "touches": 27.9662,
                "possession_lost": 10.916,
                "dispossessed": 0.8695,
                "duels_lost": 8.0583,
                "aerial_lost": 5.0996,
                "total_contest": 1.3046,
                "won_contest": 1.0249,
                "ball_recovery": 2.1438,
                "challenges_lost": 0.5727,
                "fouls": 1.2434,
                "fouls_drawn": 1.6423,
                "assist_rate": 0.2728,
                "assists": 0,
                "interceptions": 0.2592,
                "tackles_won": 0.0838,
                "tackles": 0.3534,
                "clearances": 0.9995,
                "blocks": 0.3359,
                "big_chances_created": 0.195,
                "big_chances_missed": 0.1523,
                "xgot": 0.1701,
                "offsides": 0.189,
                "ball_carries": 6.2348,
                "total_progression": 17.9509,
                "progressive_carries": 0.7069,
                "shots_off_target": 0.877,
                "duel_xg_multiplier": 0.7145,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "William Saliba, Gabriel Magalhães",
                "opponent_faced": "William Saliba, Gabriel Magalhães",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.2495,
                "goal_rate": 0.2461,
                "goals": 0,
                "shots_on_target": 0.5069,
                "total_shots": 1.3839,
                "expected_assists": 0.0418,
                "key_pass": 0.6136,
                "rating": 6.8402,
                "minutes": 87.07,
                "total_pass": 16.6732,
                "accurate_pass": 9.0379,
                "duels_won": 6.9987,
                "total_long_balls": 0.78,
                "accurate_long_balls": 0.4945,
                "total_opp_half_passes": 12.2843,
                "accurate_opp_half_passes": 6.0478,
                "crosses_total": 0.1606,
                "crosses_accurate": 0.0,
                "touches": 27.9662,
                "possession_lost": 10.916,
                "dispossessed": 0.8695,
                "duels_lost": 8.0583,
                "aerial_lost": 5.0996,
                "total_contest": 1.3046,
                "won_contest": 1.0249,
                "ball_recovery": 2.1438,
                "challenges_lost": 0.5727,
                "fouls": 1.2434,
                "fouls_drawn": 1.6423,
                "assist_rate": 0.2728,
                "assists": 0,
                "interceptions": 0.2592,
                "tackles_won": 0.0838,
                "tackles": 0.3534,
                "clearances": 0.9995,
                "blocks": 0.3359,
                "big_chances_created": 0.195,
                "big_chances_missed": 0.1523,
                "xgot": 0.1901,
                "offsides": 0.189,
                "ball_carries": 6.2348,
                "total_progression": 17.9509,
                "progressive_carries": 0.7069,
                "shots_off_target": 0.877,
                "duel_xg_multiplier": 0.7145,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "William Saliba, Gabriel Magalhães",
                "opponent_faced": "William Saliba, Gabriel Magalhães",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0838,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2232,
                  "after": 0.2495
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0313,
                  "after": 0.0418
                }
              ]
            },
            {
              "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": {
                "expected_goals": 0.2495,
                "goal_rate": 0.2461,
                "goals": 0,
                "shots_on_target": 0.5069,
                "total_shots": 1.3839,
                "expected_assists": 0.0418,
                "key_pass": 0.6136,
                "rating": 6.8402,
                "minutes": 87.07,
                "total_pass": 16.6732,
                "accurate_pass": 9.0379,
                "duels_won": 6.9987,
                "total_long_balls": 0.78,
                "accurate_long_balls": 0.4945,
                "total_opp_half_passes": 12.2843,
                "accurate_opp_half_passes": 6.0478,
                "crosses_total": 0.1606,
                "crosses_accurate": 0.0,
                "touches": 27.9662,
                "possession_lost": 10.916,
                "dispossessed": 0.8695,
                "duels_lost": 8.0583,
                "aerial_lost": 5.0996,
                "total_contest": 1.3046,
                "won_contest": 1.0249,
                "ball_recovery": 2.1438,
                "challenges_lost": 0.5727,
                "fouls": 1.2434,
                "fouls_drawn": 1.6423,
                "assist_rate": 0.2728,
                "assists": 0,
                "interceptions": 0.2592,
                "tackles_won": 0.0838,
                "tackles": 0.3534,
                "clearances": 0.9995,
                "blocks": 0.3359,
                "big_chances_created": 0.195,
                "big_chances_missed": 0.1523,
                "xgot": 0.1901,
                "offsides": 0.189,
                "ball_carries": 6.2348,
                "total_progression": 17.9509,
                "progressive_carries": 0.7069,
                "shots_off_target": 0.877,
                "duel_xg_multiplier": 0.7145,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "William Saliba, Gabriel Magalhães",
                "opponent_faced": "William Saliba, Gabriel Magalhães",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0838,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3569,
                "fifa_rank": 2189.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.2495,
                "goal_rate": 0.2461,
                "goals": 0,
                "shots_on_target": 0.5069,
                "total_shots": 1.3839,
                "expected_assists": 0.0418,
                "key_pass": 0.6136,
                "rating": 6.8402,
                "minutes": 87.07,
                "total_pass": 16.6732,
                "accurate_pass": 9.0379,
                "duels_won": 6.9987,
                "total_long_balls": 0.78,
                "accurate_long_balls": 0.4945,
                "total_opp_half_passes": 12.2843,
                "accurate_opp_half_passes": 6.0478,
                "crosses_total": 0.1606,
                "crosses_accurate": 0.0,
                "touches": 27.9662,
                "possession_lost": 10.916,
                "dispossessed": 0.8695,
                "duels_lost": 8.0583,
                "aerial_lost": 5.0996,
                "total_contest": 1.3046,
                "won_contest": 1.0249,
                "ball_recovery": 2.1438,
                "challenges_lost": 0.5727,
                "fouls": 1.2434,
                "fouls_drawn": 1.6423,
                "assist_rate": 0.2728,
                "assists": 0,
                "interceptions": 0.2592,
                "tackles_won": 0.0838,
                "tackles": 0.3534,
                "clearances": 0.9995,
                "blocks": 0.3359,
                "big_chances_created": 0.195,
                "big_chances_missed": 0.1523,
                "xgot": 0.1901,
                "offsides": 0.189,
                "ball_carries": 6.2348,
                "total_progression": 17.9509,
                "progressive_carries": 0.7069,
                "shots_off_target": 0.877,
                "duel_xg_multiplier": 0.7145,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "William Saliba, Gabriel Magalhães",
                "opponent_faced": "William Saliba, Gabriel Magalhães",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2208,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0838,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.2208,
                "goal_rate": 0.2461,
                "scorer_weight": 0.2704,
                "squad_weight_total": 0.8559,
                "weight_share": 0.3159,
                "finishing_factor": 1.0838,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.2495,
                "goal_rate": 0.2461,
                "goals": 0,
                "shots_on_target": 0.5069,
                "total_shots": 1.3839,
                "expected_assists": 0.0418,
                "key_pass": 0.6136,
                "rating": 6.8402,
                "minutes": 87.07,
                "total_pass": 16.6732,
                "accurate_pass": 9.0379,
                "duels_won": 6.9987,
                "total_long_balls": 0.78,
                "accurate_long_balls": 0.4945,
                "total_opp_half_passes": 12.2843,
                "accurate_opp_half_passes": 6.0478,
                "crosses_total": 0.1606,
                "crosses_accurate": 0.0,
                "touches": 27.9662,
                "possession_lost": 10.916,
                "dispossessed": 0.8695,
                "duels_lost": 8.0583,
                "aerial_lost": 5.0996,
                "total_contest": 1.3046,
                "won_contest": 1.0249,
                "ball_recovery": 2.1438,
                "challenges_lost": 0.5727,
                "fouls": 1.2434,
                "fouls_drawn": 1.6423,
                "assist_rate": 0.2728,
                "assists": 0,
                "interceptions": 0.2592,
                "tackles_won": 0.0838,
                "tackles": 0.3534,
                "clearances": 0.9995,
                "blocks": 0.3359,
                "big_chances_created": 0.195,
                "big_chances_missed": 0.1523,
                "xgot": 0.1901,
                "offsides": 0.189,
                "ball_carries": 6.2348,
                "total_progression": 17.9509,
                "progressive_carries": 0.7069,
                "shots_off_target": 0.877,
                "duel_xg_multiplier": 0.7145,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "William Saliba, Gabriel Magalhães",
                "opponent_faced": "William Saliba, Gabriel Magalhães",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2208,
                "projected_assists": 0,
                "assist_probability": 0.0409,
                "finishing_factor": 1.0838,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0409,
                "assist_rate": 0.2728,
                "provider_weight": 0.0522,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0856,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 14
              }
            }
          ]
        }
      },
      "bench_players": {
        "Jack Butland": {
          "player_id": 98448,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 196,
          "market_value": 1500000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.022,
            "rating": 6.8,
            "minutes": 4,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0146,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.1171,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "bench_appearance_probability": 0.109,
            "bench_expected_minutes": 4.39,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 75.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3258,
            "combined_rank_score": 1204.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 2187.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jack Butland",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Christian Kofane",
                  "ranking": 3253
                },
                {
                  "player_name": "Oumar Solet",
                  "ranking": 3254
                },
                {
                  "player_name": "Boulaye Dia",
                  "ranking": 3255
                },
                {
                  "player_name": "Maxence Caqueret",
                  "ranking": 3256
                },
                {
                  "player_name": "Umar Sadiq",
                  "ranking": 3257
                }
              ],
              "lower": [
                {
                  "player_name": "Martin Terrier",
                  "ranking": 3259
                },
                {
                  "player_name": "Lucas Da Cunha",
                  "ranking": 3260
                },
                {
                  "player_name": "Strahinja Pavlović",
                  "ranking": 3261
                },
                {
                  "player_name": "Félix Correia",
                  "ranking": 3262
                },
                {
                  "player_name": "Kenneth Taylor",
                  "ranking": 3263
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "G_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 4.392222187561249,
            "bench_appearance_prob": 0.10873737216187492,
            "market_value_adjustment": 0.4374,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€1,500,000) scaled to 4.4 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position G (quality 0.44)",
              "stats": {
                "saves": 2.9,
                "goals_prevented": 0.45,
                "rating": 6.8,
                "minutes": 90.0,
                "total_pass": 27.0,
                "accurate_pass": 20.0,
                "total_long_balls": 8.0,
                "accurate_long_balls": 4.0,
                "touches": 32.0,
                "clearances": 0.9,
                "ball_recovery": 1.2,
                "high_claims": 0.5,
                "punches": 0.3,
                "aerial_won": 0.6,
                "sweeper_actions": 1.2,
                "sweeper_accurate": 0.7,
                "saves_inside_box": 1.2,
                "possession_lost": 2.4,
                "duels_won": 0.4,
                "duels_lost": 0.2,
                "total_contest": 0.4,
                "won_contest": 0.2,
                "fouls": 0.2,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 21.0,
                "accurate_own_half_passes": 16.0
              },
              "params": {
                "market_value_eur": 1500000,
                "quality_factor": 0.4374
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 4.4 expected minutes (appearance prob 0.11)",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "expected_minutes": 4.39,
                "projection_minutes": 90.0,
                "minutes_scale": 0.0488,
                "appearance_probability": 0.109
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.109,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 75.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": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 7,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3258,
                "fifa_rank": 2187.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            }
          ]
        },
        "Lucas Herrington": {
          "player_id": 1646783,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 193,
          "market_value": 16399999,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.6448,
            "minutes": 23,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 1.0474,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0039,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 3,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.615,
            "bench_expected_minutes": 22.89,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0039,
            "finishing_factor": 1.0,
            "creation_factor": 0.9141,
            "fifa_overall": 66.0
          },
          "latest_10_games": [
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 34,
                "accurate_pass": 27,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 0,
                "clearances": 7,
                "aerial_won": 5,
                "duels_won": 7,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 14,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0233,
                "expected_assists": 0.0259,
                "total_shots": 1,
                "total_pass": 51,
                "accurate_pass": 47,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 31,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0145,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "interceptions": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 19,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 31,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 26,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 7040,
            "combined_rank_score": 5366.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 261.0,
            "sofascore_rating": 7.0909,
            "sofascore_appearances": 11.0,
            "fifa_rank": 10471.0,
            "fifa_overall": 66.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6448,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lucas Herrington",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lucas Pratto",
                  "ranking": 7035
                },
                {
                  "player_name": "Pedro Bicalho",
                  "ranking": 7036
                },
                {
                  "player_name": "Léo Vieira",
                  "ranking": 7037
                },
                {
                  "player_name": "Peter Žulj",
                  "ranking": 7038
                },
                {
                  "player_name": "Caju",
                  "ranking": 7039
                }
              ],
              "lower": [
                {
                  "player_name": "Bernard Tekpetey",
                  "ranking": 7041
                },
                {
                  "player_name": "Jhojan Torres",
                  "ranking": 7042
                },
                {
                  "player_name": "Olivier Verdon",
                  "ranking": 7043
                },
                {
                  "player_name": "Alan Soñora",
                  "ranking": 7044
                },
                {
                  "player_name": "Diego Coelho",
                  "ranking": 7045
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.695,
          "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.695,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.89,
            "bench_appearance_prob": 0.615,
            "market_value_adjustment": 1.0112,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 30.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0467
            },
            "rationale": "Bench projection scaled from XGBoost D_service (7 historical appearances) to 22.9 expected mins (appearance prob 0.61); FBref playing time empirical prior: 2.0 sub appearances, 30.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3454,
                "tackles": 0.5206,
                "tackles_won": 0.2747,
                "clearances": 1.4463,
                "aerial_won": 0.7815,
                "total_shots": 0.1608,
                "rating": 6.6448,
                "minutes": 23.89,
                "total_pass": 7.6311,
                "accurate_pass": 6.55,
                "duels_won": 0.8449,
                "total_long_balls": 0.2267,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.442,
                "accurate_own_half_passes": 4.442,
                "total_opp_half_passes": 3.1891,
                "accurate_opp_half_passes": 2.108,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.442,
                "possession_lost": 1.0811,
                "dispossessed": 0.0,
                "duels_lost": 0.8473,
                "aerial_lost": 0.5806,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2667,
                "challenges_lost": 0.0,
                "fouls": 0.2667,
                "fouls_drawn": 0.0,
                "blocks": 0.2667,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0048,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8073,
                "total_progression": 3.0346,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1608
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.1356,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1152,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.098,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0833,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 3.337,
                  "aerialWon": 1.6727,
                  "totalClearance_p90": 4.9062,
                  "totalTackle": 1.0916,
                  "totalTackle_p90": 1.8976
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.34543514251708984,
                    "model_output": 0.3454,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4628
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0481
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0105
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.01
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0056
                        }
                      ],
                      "others": -0.0097,
                      "total": 0.3454,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.757769
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.125453
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.028759
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.027415
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.015765
                        }
                      ],
                      "others_margin": -0.027339
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5206279158592224,
                    "model_output": 0.5206,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7748
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.029
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0151
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.014
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0134
                        }
                      ],
                      "others": -0.0474,
                      "total": 0.5206,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.817424
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.048481
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.026134
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.024851
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.023906
                        }
                      ],
                      "others_margin": -0.087239
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.2746671438217163,
                    "model_output": 0.2747,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4897
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0187
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0115
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.008
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0076
                        }
                      ],
                      "others": -0.038,
                      "total": 0.2747,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.861048
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.053663
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.034432
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.024817
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.023992
                        }
                      ],
                      "others_margin": -0.12963
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.4462584257125854,
                    "model_output": 1.4463,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.2526
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0857
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0803
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0496
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0503
                        }
                      ],
                      "others": 0.1887,
                      "total": 1.4463,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.077259
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.076566
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.071924
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.041983
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.04084
                        }
                      ],
                      "others_margin": 0.139674
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7814813256263733,
                    "model_output": 0.7815,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.809
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1363
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": -0.0311
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.029
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0275
                        }
                      ],
                      "others": 0.0591,
                      "total": 0.7815,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.893176
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.217671
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": -0.045602
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.042675
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.038765
                        }
                      ],
                      "others_margin": 0.07851
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.1608300656080246,
                    "model_output": 0.1608,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1687
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0702
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0181
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.01
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0084
                        }
                      ],
                      "others": -0.045,
                      "total": 0.1608,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.168672
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.070208
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.01806
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.009975
                        },
                        {
                          "name": "rating",
                          "margin": -0.008422
                        }
                      ],
                      "others_margin": -0.045081
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.644750595092773,
                    "model_output": 6.6448,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0448
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0235
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0161
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.016
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0119
                        }
                      ],
                      "others": -0.0417,
                      "total": 6.6448,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.044789
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.023486
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.016113
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.016007
                        },
                        {
                          "name": "rating",
                          "margin": -0.011941
                        }
                      ],
                      "others_margin": -0.041694
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 7,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0112, quality 0.594)",
              "stats": {
                "interceptions": 0.3493,
                "tackles": 0.5265,
                "tackles_won": 0.2777,
                "clearances": 1.4625,
                "aerial_won": 0.7902,
                "total_shots": 0.1626,
                "rating": 6.6448,
                "minutes": 23.89,
                "total_pass": 7.7166,
                "accurate_pass": 6.6234,
                "duels_won": 0.8544,
                "total_long_balls": 0.2292,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.4918,
                "accurate_own_half_passes": 4.4918,
                "total_opp_half_passes": 3.2248,
                "accurate_opp_half_passes": 2.1316,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.559,
                "possession_lost": 1.0932,
                "dispossessed": 0.0,
                "duels_lost": 0.8568,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2697,
                "challenges_lost": 0.0,
                "fouls": 0.2697,
                "fouls_drawn": 0.0,
                "blocks": 0.2697,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0049,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8275,
                "total_progression": 3.0686,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1626
              },
              "params": {
                "market_value_eur": 16399999,
                "quality_factor": 0.5942,
                "boost_factor": 1.0112,
                "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.0126)",
              "stats": {
                "interceptions": 0.3449,
                "tackles": 0.5265,
                "tackles_won": 0.2742,
                "clearances": 1.4625,
                "aerial_won": 0.7902,
                "total_shots": 0.1605,
                "rating": 6.6448,
                "minutes": 23.89,
                "total_pass": 7.7166,
                "accurate_pass": 6.6234,
                "duels_won": 0.8544,
                "total_long_balls": 0.2292,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.4918,
                "accurate_own_half_passes": 4.4918,
                "total_opp_half_passes": 3.2248,
                "accurate_opp_half_passes": 2.1316,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.559,
                "possession_lost": 1.0932,
                "dispossessed": 0.0,
                "duels_lost": 0.8568,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2697,
                "challenges_lost": 0.0,
                "fouls": 0.2663,
                "fouls_drawn": 0.0,
                "blocks": 0.2697,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0049,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8275,
                "total_progression": 3.0686,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1626
              },
              "params": {
                "blend_weight": 0.0126,
                "history_matches": 7,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2654,
                "prior_reliability": 0.0467,
                "competition": "Premier League",
                "squad": "Hull City"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.9 to 22.9 expected minutes (appearance prob 0.61)",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0047,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89
              },
              "params": {
                "expected_minutes": 22.89,
                "projection_minutes": 23.89,
                "minutes_scale": 0.9581,
                "appearance_probability": 0.615
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0047,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0047,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0039,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.9141
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 0.615
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 66.0)",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0039,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.9141,
                "fifa_overall": 66.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": 7040,
                "fifa_rank": 10471.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 66.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0039,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.9141,
                "fifa_overall": 66.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "goal_rate": 0.0,
                "scorer_weight": 0.001,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0012,
                "finishing_factor": 1.0,
                "appearance_weight": 0.615,
                "weight_rank": 14,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0039,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0039,
                "finishing_factor": 1.0,
                "creation_factor": 0.9141,
                "fifa_overall": 66.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0039,
                "assist_rate": 0.0,
                "provider_weight": 0.0036,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0058,
                "creation_factor": 0.9141,
                "appearance_weight": 0.615,
                "weight_rank": 14,
                "eligible_players": 14
              }
            }
          ]
        },
        "Charlie Hughes": {
          "player_id": 1138398,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 185,
          "market_value": 9100000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "total_pass": 7,
            "accurate_pass": 5,
            "expected_goals": 0.0028,
            "rating": 6.9,
            "minutes": 14,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 1.0169,
            "dispossessed": 0.5,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0062,
            "assists": 0,
            "expected_assists": 0.0079,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.002,
            "key_pass": 0,
            "ball_carries": 3,
            "total_progression": 9,
            "progressive_carries": 1,
            "bench_appearance_probability": 0.312,
            "bench_expected_minutes": 13.87,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3431,
            "combined_rank_score": 1424.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 2693.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9,
            "source_file": "data/player_rankings.csv",
            "player_name": "Charlie Hughes",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ilia Gruev",
                  "ranking": 3426
                },
                {
                  "player_name": "Aaron Hickey",
                  "ranking": 3427
                },
                {
                  "player_name": "Joaquin Seys",
                  "ranking": 3428
                },
                {
                  "player_name": "Julián Araujo",
                  "ranking": 3429
                },
                {
                  "player_name": "Emil Forsberg",
                  "ranking": 3430
                }
              ],
              "lower": [
                {
                  "player_name": "Wilson Isidor",
                  "ranking": 3432
                },
                {
                  "player_name": "Carlos Rodríguez",
                  "ranking": 3433
                },
                {
                  "player_name": "Ryan Manning",
                  "ranking": 3434
                },
                {
                  "player_name": "Sebastiaan Bornauw",
                  "ranking": 3435
                },
                {
                  "player_name": "Lorenzo Melgarejo",
                  "ranking": 3436
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "D_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 13.86683638124688,
            "bench_appearance_prob": 0.3121289264203127,
            "market_value_adjustment": 0.5118,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€9,100,000) scaled to 13.9 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position D (quality 0.51)",
              "stats": {
                "interceptions": 1.6,
                "tackles": 2.4,
                "tackles_won": 1.5,
                "clearances": 2.7,
                "aerial_won": 2.3,
                "duels_won": 5.6,
                "total_pass": 44.0,
                "accurate_pass": 35.0,
                "expected_goals": 0.018,
                "rating": 6.9,
                "minutes": 90.0,
                "total_long_balls": 6.0,
                "accurate_long_balls": 3.0,
                "total_own_half_passes": 28.0,
                "accurate_own_half_passes": 23.0,
                "total_opp_half_passes": 10.0,
                "accurate_opp_half_passes": 7.0,
                "crosses_total": 0.9,
                "crosses_accurate": 0.4,
                "touches": 60.0,
                "possession_lost": 6.6,
                "dispossessed": 0.5,
                "duels_lost": 3.5,
                "aerial_lost": 2.0,
                "total_contest": 4.0,
                "won_contest": 2.3,
                "ball_recovery": 5.0,
                "challenges_lost": 1.0,
                "fouls": 1.0,
                "fouls_drawn": 0.7,
                "blocks": 0.7,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.04,
                "assist_rate": 0.04,
                "expected_assists": 0.051,
                "total_shots": 0.4,
                "shots_on_target": 0.15,
                "shots_off_target": 0.2,
                "big_chances_created": 0.04,
                "xgot": 0.013,
                "key_pass": 0.6,
                "ball_carries": 20.0,
                "total_progression": 61.0,
                "progressive_carries": 5.0
              },
              "params": {
                "market_value_eur": 9100000,
                "quality_factor": 0.5118
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 13.9 expected minutes (appearance prob 0.31)",
              "stats": {
                "interceptions": 0.2465,
                "tackles": 0.3698,
                "tackles_won": 0.2311,
                "clearances": 0.416,
                "aerial_won": 0.3544,
                "duels_won": 0.8628,
                "total_pass": 6.7793,
                "accurate_pass": 5.3927,
                "expected_goals": 0.0028,
                "rating": 6.9,
                "minutes": 13.87,
                "total_long_balls": 0.9245,
                "accurate_long_balls": 0.4622,
                "total_own_half_passes": 4.3141,
                "accurate_own_half_passes": 3.5437,
                "total_opp_half_passes": 1.5408,
                "accurate_opp_half_passes": 1.0785,
                "crosses_total": 0.1387,
                "crosses_accurate": 0.0616,
                "touches": 9.2446,
                "possession_lost": 1.0169,
                "dispossessed": 0.5,
                "duels_lost": 0.5393,
                "aerial_lost": 2.0,
                "total_contest": 0.6163,
                "won_contest": 0.3544,
                "ball_recovery": 0.7704,
                "challenges_lost": 1.0,
                "fouls": 0.1541,
                "fouls_drawn": 0.1079,
                "blocks": 0.1079,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0062,
                "assist_rate": 0.0062,
                "expected_assists": 0.0079,
                "total_shots": 0.0616,
                "shots_on_target": 0.0231,
                "shots_off_target": 0.0308,
                "big_chances_created": 0.0062,
                "xgot": 0.002,
                "key_pass": 0.0924,
                "ball_carries": 3.0815,
                "total_progression": 9.3986,
                "progressive_carries": 0.7704,
                "bench_appearance_probability": 0.312,
                "bench_expected_minutes": 13.87
              },
              "params": {
                "expected_minutes": 13.87,
                "projection_minutes": 90.0,
                "minutes_scale": 0.1541,
                "appearance_probability": 0.312
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2465,
                "tackles": 0.3698,
                "tackles_won": 0.2311,
                "clearances": 0.416,
                "aerial_won": 0.3544,
                "duels_won": 0.8628,
                "total_pass": 6.7793,
                "accurate_pass": 5.3927,
                "expected_goals": 0.0028,
                "rating": 6.9,
                "minutes": 13.87,
                "total_long_balls": 0.9245,
                "accurate_long_balls": 0.4622,
                "total_own_half_passes": 4.3141,
                "accurate_own_half_passes": 3.5437,
                "total_opp_half_passes": 1.5408,
                "accurate_opp_half_passes": 1.0785,
                "crosses_total": 0.1387,
                "crosses_accurate": 0.0616,
                "touches": 9.2446,
                "possession_lost": 1.0169,
                "dispossessed": 0.5,
                "duels_lost": 0.5393,
                "aerial_lost": 2.0,
                "total_contest": 0.6163,
                "won_contest": 0.3544,
                "ball_recovery": 0.7704,
                "challenges_lost": 1.0,
                "fouls": 0.1541,
                "fouls_drawn": 0.1079,
                "blocks": 0.1079,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0062,
                "assist_rate": 0.0062,
                "expected_assists": 0.0079,
                "total_shots": 0.0616,
                "shots_on_target": 0.0231,
                "shots_off_target": 0.0308,
                "big_chances_created": 0.0062,
                "xgot": 0.002,
                "key_pass": 0.0924,
                "ball_carries": 3.0815,
                "total_progression": 9.3986,
                "progressive_carries": 0.7704,
                "bench_appearance_probability": 0.312,
                "bench_expected_minutes": 13.87
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.2465,
                "tackles": 0.3698,
                "tackles_won": 0.2311,
                "clearances": 0.416,
                "aerial_won": 0.3544,
                "duels_won": 0.8628,
                "total_pass": 6.7793,
                "accurate_pass": 5.3927,
                "expected_goals": 0.0028,
                "rating": 6.9,
                "minutes": 13.87,
                "total_long_balls": 0.9245,
                "accurate_long_balls": 0.4622,
                "total_own_half_passes": 4.3141,
                "accurate_own_half_passes": 3.5437,
                "total_opp_half_passes": 1.5408,
                "accurate_opp_half_passes": 1.0785,
                "crosses_total": 0.1387,
                "crosses_accurate": 0.0616,
                "touches": 9.2446,
                "possession_lost": 1.0169,
                "dispossessed": 0.5,
                "duels_lost": 0.5393,
                "aerial_lost": 2.0,
                "total_contest": 0.6163,
                "won_contest": 0.3544,
                "ball_recovery": 0.7704,
                "challenges_lost": 1.0,
                "fouls": 0.1541,
                "fouls_drawn": 0.1079,
                "blocks": 0.1079,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0062,
                "assists": 0,
                "expected_assists": 0.0079,
                "total_shots": 0.0616,
                "shots_on_target": 0.0231,
                "shots_off_target": 0.0308,
                "big_chances_created": 0.0062,
                "xgot": 0.002,
                "key_pass": 0.0924,
                "ball_carries": 3.0815,
                "total_progression": 9.3986,
                "progressive_carries": 0.7704,
                "bench_appearance_probability": 0.312,
                "bench_expected_minutes": 13.87,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.312,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 74.0)",
              "stats": {
                "interceptions": 0.2465,
                "tackles": 0.3698,
                "tackles_won": 0.2311,
                "clearances": 0.416,
                "aerial_won": 0.3544,
                "duels_won": 0.8628,
                "total_pass": 6.7793,
                "accurate_pass": 5.3927,
                "expected_goals": 0.0028,
                "rating": 6.9,
                "minutes": 13.87,
                "total_long_balls": 0.9245,
                "accurate_long_balls": 0.4622,
                "total_own_half_passes": 4.3141,
                "accurate_own_half_passes": 3.5437,
                "total_opp_half_passes": 1.5408,
                "accurate_opp_half_passes": 1.0785,
                "crosses_total": 0.1387,
                "crosses_accurate": 0.0616,
                "touches": 9.2446,
                "possession_lost": 1.0169,
                "dispossessed": 0.5,
                "duels_lost": 0.5393,
                "aerial_lost": 2.0,
                "total_contest": 0.6163,
                "won_contest": 0.3544,
                "ball_recovery": 0.7704,
                "challenges_lost": 1.0,
                "fouls": 0.1541,
                "fouls_drawn": 0.1079,
                "blocks": 0.1079,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0062,
                "assists": 0,
                "expected_assists": 0.0079,
                "total_shots": 0.0616,
                "shots_on_target": 0.0231,
                "shots_off_target": 0.0308,
                "big_chances_created": 0.0062,
                "xgot": 0.002,
                "key_pass": 0.0924,
                "ball_carries": 3.0815,
                "total_progression": 9.3986,
                "progressive_carries": 0.7704,
                "bench_appearance_probability": 0.312,
                "bench_expected_minutes": 13.87,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3431,
                "fifa_rank": 2693.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            }
          ]
        },
        "Christos Mouzakitis": {
          "player_id": 1416540,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 36,
          "height": 178,
          "market_value": 21000000,
          "stats": {
            "key_pass": 1,
            "assist_rate": 0.038,
            "assists": 0,
            "expected_assists": 0.0309,
            "expected_goals": 0.0166,
            "total_shots": 0,
            "total_pass": 15,
            "accurate_pass": 12,
            "ball_recovery": 2,
            "duels_won": 2,
            "rating": 7.2,
            "minutes": 23,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 2.4043,
            "dispossessed": 0.9,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0202,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0112,
            "ball_carries": 9,
            "total_progression": 23,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.535,
            "bench_expected_minutes": 22.78,
            "projected_substitution_order": 4,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0163,
            "projected_assists": 0,
            "assist_probability": 0.03,
            "finishing_factor": 0.9023,
            "creation_factor": 0.9432,
            "fifa_overall": 73.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 4143,
            "combined_rank_score": 2149.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 745.0,
            "sofascore_rating": 6.6667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 3554.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.2,
            "source_file": "data/player_rankings.csv",
            "player_name": "Christos Mouzakitis",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nicolás Valentini",
                  "ranking": 4138
                },
                {
                  "player_name": "Borna Sosa",
                  "ranking": 4139
                },
                {
                  "player_name": "Nathan Broadhead",
                  "ranking": 4140
                },
                {
                  "player_name": "Fábio Cardoso",
                  "ranking": 4141
                },
                {
                  "player_name": "Jorge Sánchez",
                  "ranking": 4142
                }
              ],
              "lower": [
                {
                  "player_name": "Sammie Szmodics",
                  "ranking": 4144
                },
                {
                  "player_name": "Mathias Honsak",
                  "ranking": 4145
                },
                {
                  "player_name": "Dan Neil",
                  "ranking": 4146
                },
                {
                  "player_name": "Juan Cruz",
                  "ranking": 4147
                },
                {
                  "player_name": "Lukas Petkov",
                  "ranking": 4148
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "M_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 22.77746860076133,
            "bench_appearance_prob": 0.5353394818527877,
            "market_value_adjustment": 0.6408,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€21,000,000) scaled to 22.8 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position M (quality 0.64)",
              "stats": {
                "key_pass": 2.1,
                "assists": 0.15,
                "assist_rate": 0.15,
                "expected_assists": 0.171,
                "expected_goals": 0.11,
                "total_shots": 1.7,
                "total_pass": 58.0,
                "accurate_pass": 47.0,
                "ball_recovery": 6.0,
                "duels_won": 7.0,
                "rating": 7.2,
                "minutes": 90.0,
                "total_long_balls": 5.0,
                "accurate_long_balls": 3.0,
                "total_own_half_passes": 24.0,
                "accurate_own_half_passes": 19.0,
                "total_opp_half_passes": 23.0,
                "accurate_opp_half_passes": 17.0,
                "crosses_total": 1.7,
                "crosses_accurate": 0.8,
                "touches": 72.0,
                "possession_lost": 9.5,
                "dispossessed": 0.9,
                "duels_lost": 4.7,
                "aerial_won": 1.5,
                "aerial_lost": 1.1,
                "interceptions": 1.3,
                "tackles_won": 1.7,
                "tackles": 2.2,
                "clearances": 0.9,
                "total_contest": 4.6,
                "won_contest": 2.6,
                "challenges_lost": 1.3,
                "fouls": 1.8,
                "fouls_drawn": 1.3,
                "goals": 0.08,
                "goal_rate": 0.08,
                "shots_on_target": 0.7,
                "shots_off_target": 0.6,
                "blocks": 0.4,
                "big_chances_created": 0.13,
                "big_chances_missed": 0.07,
                "xgot": 0.074,
                "ball_carries": 34.0,
                "total_progression": 91.0,
                "progressive_carries": 8.0
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 22.8 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0.5315,
                "assists": 0.038,
                "assist_rate": 0.038,
                "expected_assists": 0.0433,
                "expected_goals": 0.0278,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goals": 0.0202,
                "goal_rate": 0.0202,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0187,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78
              },
              "params": {
                "expected_minutes": 22.78,
                "projection_minutes": 90.0,
                "minutes_scale": 0.2531,
                "appearance_probability": 0.535
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5315,
                "assists": 0.038,
                "assist_rate": 0.038,
                "expected_assists": 0.0433,
                "expected_goals": 0.0278,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goals": 0.0202,
                "goal_rate": 0.0202,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0187,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.5315,
                "assist_rate": 0.038,
                "assists": 0,
                "expected_assists": 0.0433,
                "expected_goals": 0.0278,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goal_rate": 0.0202,
                "goals": 0,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0187,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5315,
                "assist_rate": 0.038,
                "assists": 0,
                "expected_assists": 0.0309,
                "expected_goals": 0.0166,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goal_rate": 0.0202,
                "goals": 0,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0112,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9023,
                "creation_factor": 0.9432
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 0.535
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0278,
                  "after": 0.0166
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0433,
                  "after": 0.0309
                }
              ]
            },
            {
              "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": {
                "key_pass": 0.5315,
                "assist_rate": 0.038,
                "assists": 0,
                "expected_assists": 0.0309,
                "expected_goals": 0.0166,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goal_rate": 0.0202,
                "goals": 0,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0112,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9023,
                "creation_factor": 0.9432,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4143,
                "fifa_rank": 3554.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.5315,
                "assist_rate": 0.038,
                "assists": 0,
                "expected_assists": 0.0309,
                "expected_goals": 0.0166,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goal_rate": 0.0202,
                "goals": 0,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0112,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0163,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9023,
                "creation_factor": 0.9432,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0163,
                "goal_rate": 0.0202,
                "scorer_weight": 0.015,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0175,
                "finishing_factor": 0.9023,
                "appearance_weight": 0.535,
                "weight_rank": 12,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.5315,
                "assist_rate": 0.038,
                "assists": 0,
                "expected_assists": 0.0309,
                "expected_goals": 0.0166,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goal_rate": 0.0202,
                "goals": 0,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0112,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0163,
                "projected_assists": 0,
                "assist_probability": 0.03,
                "finishing_factor": 0.9023,
                "creation_factor": 0.9432,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.03,
                "assist_rate": 0.038,
                "provider_weight": 0.0291,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0477,
                "creation_factor": 0.9432,
                "appearance_weight": 0.535,
                "weight_rank": 8,
                "eligible_players": 14
              }
            }
          ]
        },
        "Brooke Norton-Cuffy": {
          "player_id": 1087514,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 18,
          "height": 181,
          "market_value": 15500000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0255,
            "assist_rate": 0.0531,
            "assists": 0,
            "expected_goals": 0.0369,
            "goal_rate": 0.0414,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6596,
            "minutes": 23,
            "total_pass": 6,
            "accurate_pass": 4,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 13,
            "possession_lost": 4.2407,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0595,
            "ball_carries": 5,
            "total_progression": 45,
            "progressive_carries": 2,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.525,
            "bench_expected_minutes": 22.56,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 13,
                "rating": 6.9,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0402,
                "expected_assists": 0.001,
                "total_shots": 1,
                "shots_on_target": 1,
                "shots_off_target": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "tackles": 1,
                "tackles_won": 0,
                "interceptions": 1,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 1,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 25,
                "rating": 6.8,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.007,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 6,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 3,
                "ball_recovery": 1,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 68,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 8,
                "clearances": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 8,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0473,
                "expected_assists": 0.0003,
                "total_shots": 1,
                "total_pass": 5,
                "accurate_pass": 4,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 26,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "clearances": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3288,
            "combined_rank_score": 1230.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 2350.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6596,
            "source_file": "data/player_rankings.csv",
            "player_name": "Brooke Norton-Cuffy",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Omari Hutchinson",
                  "ranking": 3283
                },
                {
                  "player_name": "Fabian Rieder",
                  "ranking": 3284
                },
                {
                  "player_name": "Brian Rodríguez",
                  "ranking": 3285
                },
                {
                  "player_name": "Gorrotxa",
                  "ranking": 3286
                },
                {
                  "player_name": "Asencio",
                  "ranking": 3287
                }
              ],
              "lower": [
                {
                  "player_name": "Brenden Aaronson",
                  "ranking": 3289
                },
                {
                  "player_name": "Guruzeta",
                  "ranking": 3290
                },
                {
                  "player_name": "Igor Matanović",
                  "ranking": 3291
                },
                {
                  "player_name": "Ionuț Andrei Radu",
                  "ranking": 3292
                },
                {
                  "player_name": "Nobel Mendy",
                  "ranking": 3293
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.562,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.562,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.555021941280785,
            "bench_appearance_prob": 0.5252282700582175,
            "market_value_adjustment": 1.0119,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (5 historical appearances) to 22.6 expected mins (appearance prob 0.53)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3074,
                "expected_assists": 0.0202,
                "assists": 0.042,
                "assist_rate": 0.042,
                "expected_goals": 0.0291,
                "goals": 0.0327,
                "goal_rate": 0.0327,
                "shots_on_target": 0.1645,
                "total_shots": 0.5245,
                "rating": 6.6596,
                "minutes": 18.05,
                "total_pass": 4.8813,
                "accurate_pass": 3.4935,
                "duels_won": 1.3408,
                "total_long_balls": 1.1682,
                "accurate_long_balls": 0.5406,
                "total_own_half_passes": 1.7602,
                "accurate_own_half_passes": 1.1797,
                "total_opp_half_passes": 3.1211,
                "accurate_opp_half_passes": 2.3138,
                "crosses_total": 0.6522,
                "crosses_accurate": 0.0,
                "touches": 10.6546,
                "possession_lost": 3.3538,
                "dispossessed": 0.0,
                "duels_lost": 0.9869,
                "aerial_won": 0.0,
                "aerial_lost": 0.2667,
                "interceptions": 0.3138,
                "tackles_won": 0.0,
                "tackles": 0.8473,
                "clearances": 0.1927,
                "total_contest": 0.7202,
                "won_contest": 0.4935,
                "challenges_lost": 0.0,
                "fouls": 0.4935,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.047,
                "ball_carries": 3.6261,
                "total_progression": 35.8225,
                "progressive_carries": 1.4194,
                "shots_off_target": 0.36
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-11-03T11:05:50.765150+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 905,
                    "rows": 25067
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.2696,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.2292,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1656,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.4352,
                  "creative_index": 0.0929,
                  "expectedGoals": 0.0187,
                  "expectedAssists": 0.002,
                  "keyPass": 0.2292
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.3074183762073517,
                    "model_output": 0.3074,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1578
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1373
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0712
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0516
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0289
                      }
                    ],
                    "decomposition": {
                      "base": 0.8902,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3973
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0603
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0392
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0275
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0179
                        }
                      ],
                      "others": -0.0406,
                      "total": 0.3074,
                      "log_link": true,
                      "margin_base": -0.116298,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.591212
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.130496
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.094979
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.072585
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.050139
                        }
                      ],
                      "others_margin": -0.123837
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.020188748836517334,
                    "model_output": 0.0202,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1181
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1136
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1034
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0572
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0473
                      }
                    ],
                    "decomposition": {
                      "base": 0.0847,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0381
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0126
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0023
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.002
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0016
                        }
                      ],
                      "others": -0.0079,
                      "total": 0.0202,
                      "log_link": true,
                      "margin_base": -2.468924,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.598496
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.314982
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.068575
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.066545
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.056199
                        }
                      ],
                      "others_margin": -0.328909
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04197252169251442,
                    "model_output": 0.042,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.0627
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0445
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0417
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0324
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0293
                      }
                    ],
                    "decomposition": {
                      "base": 0.0851,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0217
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0055
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0037
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0032
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0028
                        }
                      ],
                      "others": -0.0062,
                      "total": 0.042,
                      "log_link": true,
                      "margin_base": -2.463472,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.294204
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.090998
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.065583
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.060891
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.055508
                        }
                      ],
                      "others_margin": -0.140084
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.029149336740374565,
                    "model_output": 0.0291,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1255
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0756
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0438
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0265
                      }
                    ],
                    "decomposition": {
                      "base": 0.0918,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0366
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0142
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0059
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0026
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0012
                        }
                      ],
                      "others": -0.0022,
                      "total": 0.0291,
                      "log_link": true,
                      "margin_base": -2.387963,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.50848
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.298265
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.154578
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.076559
                        },
                        {
                          "name": "goals",
                          "margin": -0.036832
                        }
                      ],
                      "others_margin": -0.072648
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03267372399568558,
                    "model_output": 0.0327,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0923
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.067
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.041
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0334
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.0946,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.04
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0123
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0076
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0026
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.002
                        }
                      ],
                      "others": -0.0014,
                      "total": 0.0327,
                      "log_link": true,
                      "margin_base": -2.358385,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.54988
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.255407
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.198753
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.076587
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.05996
                        }
                      ],
                      "others_margin": -0.042134
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.1644546091556549,
                    "model_output": 0.1645,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.117
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0884
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0772
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0315
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0258
                      }
                    ],
                    "decomposition": {
                      "base": 0.3179,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1281
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0453
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0163
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0147
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0132
                        }
                      ],
                      "others": 0.0348,
                      "total": 0.1645,
                      "log_link": true,
                      "margin_base": -1.146086,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.516068
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.272481
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.119412
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.108404
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.096942
                        }
                      ],
                      "others_margin": 0.237464
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5244976282119751,
                    "model_output": 0.5245,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1349
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1208
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0462
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.044
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0312
                      }
                    ],
                    "decomposition": {
                      "base": 0.9849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3696
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1925
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0789
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0371
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0283
                        }
                      ],
                      "others": 0.0316,
                      "total": 0.5245,
                      "log_link": false,
                      "margin_base": 0.984935,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.369589
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.192539
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.07891
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.03712
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.028263
                        }
                      ],
                      "others_margin": 0.031637
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.659605979919434,
                    "model_output": 6.6596,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0864
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0749
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0486
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0482
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0337
                      }
                    ],
                    "decomposition": {
                      "base": 6.8574,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0781
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0536
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0187
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0116
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0107
                        }
                      ],
                      "others": -0.0251,
                      "total": 6.6596,
                      "log_link": false,
                      "margin_base": 6.857404,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.078123
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.053643
                        },
                        {
                          "name": "rating",
                          "margin": -0.018653
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.011577
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.010701
                        }
                      ],
                      "others_margin": -0.025104
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 5,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0119, quality 0.585)",
              "stats": {
                "key_pass": 0.3111,
                "expected_assists": 0.0204,
                "assists": 0.0425,
                "assist_rate": 0.0425,
                "expected_goals": 0.0295,
                "goals": 0.0331,
                "goal_rate": 0.0331,
                "shots_on_target": 0.1664,
                "total_shots": 0.5307,
                "rating": 6.6596,
                "minutes": 18.05,
                "total_pass": 4.9394,
                "accurate_pass": 3.5351,
                "duels_won": 1.3568,
                "total_long_balls": 1.1821,
                "accurate_long_balls": 0.547,
                "total_own_half_passes": 1.7811,
                "accurate_own_half_passes": 1.1937,
                "total_opp_half_passes": 3.1582,
                "accurate_opp_half_passes": 2.3413,
                "crosses_total": 0.66,
                "crosses_accurate": 0.0,
                "touches": 10.7814,
                "possession_lost": 3.3937,
                "dispossessed": 0.0,
                "duels_lost": 0.9986,
                "aerial_won": 0.0,
                "aerial_lost": 0.2699,
                "interceptions": 0.3175,
                "tackles_won": 0.0,
                "tackles": 0.8574,
                "clearances": 0.195,
                "total_contest": 0.7288,
                "won_contest": 0.4994,
                "challenges_lost": 0.0,
                "fouls": 0.4994,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0476,
                "ball_carries": 3.6693,
                "total_progression": 36.2488,
                "progressive_carries": 1.4363,
                "shots_off_target": 0.3643
              },
              "params": {
                "market_value_eur": 15500000,
                "quality_factor": 0.5846,
                "boost_factor": 1.0119,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.1 to 22.6 expected minutes (appearance prob 0.53)",
              "stats": {
                "key_pass": 0.3887,
                "expected_assists": 0.0255,
                "assists": 0.0531,
                "assist_rate": 0.0531,
                "expected_goals": 0.0369,
                "goals": 0.0414,
                "goal_rate": 0.0414,
                "shots_on_target": 0.2079,
                "total_shots": 0.6632,
                "rating": 6.6596,
                "minutes": 22.56,
                "total_pass": 6.1722,
                "accurate_pass": 4.4174,
                "duels_won": 1.6954,
                "total_long_balls": 1.4771,
                "accurate_long_balls": 0.6835,
                "total_own_half_passes": 2.2256,
                "accurate_own_half_passes": 1.4916,
                "total_opp_half_passes": 3.9464,
                "accurate_opp_half_passes": 2.9257,
                "crosses_total": 0.8247,
                "crosses_accurate": 0.0,
                "touches": 13.4723,
                "possession_lost": 4.2407,
                "dispossessed": 0.0,
                "duels_lost": 1.2478,
                "aerial_won": 0.0,
                "aerial_lost": 0.2699,
                "interceptions": 0.3967,
                "tackles_won": 0.0,
                "tackles": 1.0714,
                "clearances": 0.2437,
                "total_contest": 0.9107,
                "won_contest": 0.624,
                "challenges_lost": 0.0,
                "fouls": 0.624,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0595,
                "ball_carries": 4.5851,
                "total_progression": 45.296,
                "progressive_carries": 1.7948,
                "shots_off_target": 0.4552,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 22.56
              },
              "params": {
                "expected_minutes": 22.56,
                "projection_minutes": 18.05,
                "minutes_scale": 1.2496,
                "appearance_probability": 0.525
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.3887,
                "expected_assists": 0.0255,
                "assists": 0.0531,
                "assist_rate": 0.0531,
                "expected_goals": 0.0369,
                "goals": 0.0414,
                "goal_rate": 0.0414,
                "shots_on_target": 0.2079,
                "total_shots": 0.6632,
                "rating": 6.6596,
                "minutes": 22.56,
                "total_pass": 6.1722,
                "accurate_pass": 4.4174,
                "duels_won": 1.6954,
                "total_long_balls": 1.4771,
                "accurate_long_balls": 0.6835,
                "total_own_half_passes": 2.2256,
                "accurate_own_half_passes": 1.4916,
                "total_opp_half_passes": 3.9464,
                "accurate_opp_half_passes": 2.9257,
                "crosses_total": 0.8247,
                "crosses_accurate": 0.0,
                "touches": 13.4723,
                "possession_lost": 4.2407,
                "dispossessed": 0.0,
                "duels_lost": 1.2478,
                "aerial_won": 0.0,
                "aerial_lost": 0.2699,
                "interceptions": 0.3967,
                "tackles_won": 0.0,
                "tackles": 1.0714,
                "clearances": 0.2437,
                "total_contest": 0.9107,
                "won_contest": 0.624,
                "challenges_lost": 0.0,
                "fouls": 0.624,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0595,
                "ball_carries": 4.5851,
                "total_progression": 45.296,
                "progressive_carries": 1.7948,
                "shots_off_target": 0.4552,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 22.56
              },
              "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.3887,
                "expected_assists": 0.0255,
                "assist_rate": 0.0531,
                "assists": 0,
                "expected_goals": 0.0369,
                "goal_rate": 0.0414,
                "goals": 0,
                "shots_on_target": 0.2079,
                "total_shots": 0.6632,
                "rating": 6.6596,
                "minutes": 22.56,
                "total_pass": 6.1722,
                "accurate_pass": 4.4174,
                "duels_won": 1.6954,
                "total_long_balls": 1.4771,
                "accurate_long_balls": 0.6835,
                "total_own_half_passes": 2.2256,
                "accurate_own_half_passes": 1.4916,
                "total_opp_half_passes": 3.9464,
                "accurate_opp_half_passes": 2.9257,
                "crosses_total": 0.8247,
                "crosses_accurate": 0.0,
                "touches": 13.4723,
                "possession_lost": 4.2407,
                "dispossessed": 0.0,
                "duels_lost": 1.2478,
                "aerial_won": 0.0,
                "aerial_lost": 0.2699,
                "interceptions": 0.3967,
                "tackles_won": 0.0,
                "tackles": 1.0714,
                "clearances": 0.2437,
                "total_contest": 0.9107,
                "won_contest": 0.624,
                "challenges_lost": 0.0,
                "fouls": 0.624,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0595,
                "ball_carries": 4.5851,
                "total_progression": 45.296,
                "progressive_carries": 1.7948,
                "shots_off_target": 0.4552,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 22.56,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.525,
                "projected_substitutes": 4,
                "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 75.0)",
              "stats": {
                "key_pass": 0.3887,
                "expected_assists": 0.0255,
                "assist_rate": 0.0531,
                "assists": 0,
                "expected_goals": 0.0369,
                "goal_rate": 0.0414,
                "goals": 0,
                "shots_on_target": 0.2079,
                "total_shots": 0.6632,
                "rating": 6.6596,
                "minutes": 22.56,
                "total_pass": 6.1722,
                "accurate_pass": 4.4174,
                "duels_won": 1.6954,
                "total_long_balls": 1.4771,
                "accurate_long_balls": 0.6835,
                "total_own_half_passes": 2.2256,
                "accurate_own_half_passes": 1.4916,
                "total_opp_half_passes": 3.9464,
                "accurate_opp_half_passes": 2.9257,
                "crosses_total": 0.8247,
                "crosses_accurate": 0.0,
                "touches": 13.4723,
                "possession_lost": 4.2407,
                "dispossessed": 0.0,
                "duels_lost": 1.2478,
                "aerial_won": 0.0,
                "aerial_lost": 0.2699,
                "interceptions": 0.3967,
                "tackles_won": 0.0,
                "tackles": 1.0714,
                "clearances": 0.2437,
                "total_contest": 0.9107,
                "won_contest": 0.624,
                "challenges_lost": 0.0,
                "fouls": 0.624,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0595,
                "ball_carries": 4.5851,
                "total_progression": 45.296,
                "progressive_carries": 1.7948,
                "shots_off_target": 0.4552,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 22.56,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.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": 3288,
                "fifa_rank": 2350.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            }
          ]
        },
        "Robinio Vaz": {
          "player_id": 1514800,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 47,
          "height": 185,
          "market_value": 18700000,
          "stats": {
            "expected_goals": 0.0627,
            "goal_rate": 0.0898,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.019,
            "key_pass": 0,
            "rating": 6.5807,
            "minutes": 26,
            "total_pass": 5,
            "accurate_pass": 3,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 4.0143,
            "dispossessed": 0.5194,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 20,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.591,
            "bench_expected_minutes": 26.01,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0595,
            "projected_assists": 0,
            "assist_probability": 0.0187,
            "finishing_factor": 0.9648,
            "creation_factor": 0.8,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 8,
                "rating": 6.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 1,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 22,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0091,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 8,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0041,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4480,
            "combined_rank_score": 2500.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4913.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5807,
            "source_file": "data/player_rankings.csv",
            "player_name": "Robinio Vaz",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Christopher Bonsu Baah",
                  "ranking": 4475
                },
                {
                  "player_name": "Valentin Atangana",
                  "ranking": 4476
                },
                {
                  "player_name": "Alex Luna",
                  "ranking": 4477
                },
                {
                  "player_name": "Matt Crooks",
                  "ranking": 4478
                },
                {
                  "player_name": "Lautaro Rivero",
                  "ranking": 4479
                }
              ],
              "lower": [
                {
                  "player_name": "Franco Vázquez",
                  "ranking": 4481
                },
                {
                  "player_name": "Fraser Forster",
                  "ranking": 4482
                },
                {
                  "player_name": "Rodrigo Rey",
                  "ranking": 4483
                },
                {
                  "player_name": "Conan Ledesma",
                  "ranking": 4484
                },
                {
                  "player_name": "Rafael Santos Borré",
                  "ranking": 4485
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.562,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.562,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 26.007630757726062,
            "bench_appearance_prob": 0.5912559435330029,
            "market_value_adjustment": 1.017,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (5 historical appearances) to 26.0 expected mins (appearance prob 0.59)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0622,
                "goals": 0.0589,
                "goal_rate": 0.0589,
                "shots_on_target": 0.2377,
                "total_shots": 0.63,
                "expected_assists": 0.0158,
                "key_pass": 0.2483,
                "rating": 6.5807,
                "minutes": 14.47,
                "total_pass": 2.9936,
                "accurate_pass": 2.2384,
                "duels_won": 1.2231,
                "total_long_balls": 0.1656,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5291,
                "accurate_opp_half_passes": 1.9687,
                "crosses_total": 0.4352,
                "crosses_accurate": 0.0,
                "touches": 6.1701,
                "possession_lost": 2.6315,
                "dispossessed": 0.5107,
                "duels_lost": 1.5046,
                "aerial_lost": 0.1656,
                "total_contest": 0.2292,
                "won_contest": 0.0,
                "ball_recovery": 1.0344,
                "challenges_lost": 0.2292,
                "fouls": 0.3699,
                "fouls_drawn": 0.9939,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.7529,
                "total_progression": 13.0147,
                "progressive_carries": 0.5393,
                "shots_off_target": 0.3923
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:06:26.876327+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 612,
                    "rows": 17180
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.2696,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.2292,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1948,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1656,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 0.0,
                  "accuratePass": 2.2384,
                  "expectedGoals": 0.0,
                  "accurateOppositionHalfPasses": 1.9687,
                  "totalShots": 0.0,
                  "totalOppositionHalfPasses": 2.5291
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06221567839384079,
                    "model_output": 0.0622,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2767
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0987
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.036
                      },
                      {
                        "name": "goals",
                        "importance": 0.0336
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.1929,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.086
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0158
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0072
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0042
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0032
                        }
                      ],
                      "others": -0.0143,
                      "total": 0.0622,
                      "log_link": true,
                      "margin_base": -1.645586,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.590445
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.160219
                        },
                        {
                          "name": "goals",
                          "margin": -0.082784
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.051954
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.040541
                        }
                      ],
                      "others_margin": -0.205619
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.058886099606752396,
                    "model_output": 0.0589,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1491
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0805
                      },
                      {
                        "name": "goals",
                        "importance": 0.056
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0343
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.1972,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.075
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0148
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0094
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.008
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0058
                        }
                      ],
                      "others": -0.0253,
                      "total": 0.0589,
                      "log_link": true,
                      "margin_base": -1.623746,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.479012
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.12921
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.091767
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.085216
                        },
                        {
                          "name": "goals",
                          "margin": -0.067004
                        }
                      ],
                      "others_margin": -0.356196
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2376532256603241,
                    "model_output": 0.2377,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2173
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0637
                      },
                      {
                        "name": "goals",
                        "importance": 0.0596
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0393
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.5269,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2047
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0269
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0142
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0126
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0116
                        }
                      ],
                      "others": -0.0192,
                      "total": 0.2377,
                      "log_link": true,
                      "margin_base": -0.640773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.491909
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.08711
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.049228
                        },
                        {
                          "name": "goals",
                          "margin": -0.04579
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.044197
                        }
                      ],
                      "others_margin": -0.077936
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6299857497215271,
                    "model_output": 0.63,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3005
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0627
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0526
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0309
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0307
                      }
                    ],
                    "decomposition": {
                      "base": 1.3756,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4439
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1164
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0526
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.04
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0221
                        }
                      ],
                      "others": -0.0706,
                      "total": 0.63,
                      "log_link": false,
                      "margin_base": 1.375643,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.443868
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.116404
                        },
                        {
                          "name": "goals",
                          "margin": -0.052554
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.040024
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.022079
                        }
                      ],
                      "others_margin": -0.070728
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.015811195597052574,
                    "model_output": 0.0158,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1287
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1119
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0634
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0522
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.051
                      }
                    ],
                    "decomposition": {
                      "base": 0.065,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.021
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0138
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0037
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.003
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0025
                        }
                      ],
                      "others": -0.0052,
                      "total": 0.0158,
                      "log_link": true,
                      "margin_base": -2.733324,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.38909
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.375142
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.129981
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.119212
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.109637
                        }
                      ],
                      "others_margin": -0.290651
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.24831610918045044,
                    "model_output": 0.2483,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1579
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1341
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0953
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.069
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.6917,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2784
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0372
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0295
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0252
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0227
                        }
                      ],
                      "others": -0.0504,
                      "total": 0.2483,
                      "log_link": true,
                      "margin_base": -0.368585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.514995
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.094248
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.081686
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.075543
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.073131
                        }
                      ],
                      "others_margin": -0.184866
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.580746173858643,
                    "model_output": 6.5807,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.048
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0462
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0455
                      },
                      {
                        "name": "rating",
                        "importance": 0.0455
                      }
                    ],
                    "decomposition": {
                      "base": 6.7733,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.054
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0307
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0146
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0114
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0107
                        }
                      ],
                      "others": -0.0712,
                      "total": 6.5807,
                      "log_link": false,
                      "margin_base": 6.773334,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.054011
                        },
                        {
                          "name": "rating",
                          "margin": -0.03072
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014643
                        },
                        {
                          "name": "touches",
                          "margin": -0.011433
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.010713
                        }
                      ],
                      "others_margin": -0.071071
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 5,
                  "role_matches": 5,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0170, quality 0.618)",
              "stats": {
                "expected_goals": 0.0633,
                "goals": 0.0599,
                "goal_rate": 0.0599,
                "shots_on_target": 0.2417,
                "total_shots": 0.6407,
                "expected_assists": 0.0161,
                "key_pass": 0.2525,
                "rating": 6.5807,
                "minutes": 14.47,
                "total_pass": 3.0445,
                "accurate_pass": 2.2765,
                "duels_won": 1.2439,
                "total_long_balls": 0.1684,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5721,
                "accurate_opp_half_passes": 2.0022,
                "crosses_total": 0.4426,
                "crosses_accurate": 0.0,
                "touches": 6.275,
                "possession_lost": 2.6762,
                "dispossessed": 0.5194,
                "duels_lost": 1.5302,
                "aerial_lost": 0.1684,
                "total_contest": 0.2331,
                "won_contest": 0.0,
                "ball_recovery": 1.052,
                "challenges_lost": 0.2331,
                "fouls": 0.3762,
                "fouls_drawn": 1.0108,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.7827,
                "total_progression": 13.2359,
                "progressive_carries": 0.5485,
                "shots_off_target": 0.399
              },
              "params": {
                "market_value_eur": 18700000,
                "quality_factor": 0.6181,
                "boost_factor": 1.017,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 14.5 to 26.0 expected minutes (appearance prob 0.59)",
              "stats": {
                "expected_goals": 0.0949,
                "goals": 0.0898,
                "goal_rate": 0.0898,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.0241,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01
              },
              "params": {
                "expected_minutes": 26.01,
                "projection_minutes": 14.47,
                "minutes_scale": 1.5,
                "appearance_probability": 0.591
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0949,
                "goals": 0.0898,
                "goal_rate": 0.0898,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.0241,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.0898,
                "goals": 0,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.0241,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0627,
                "goal_rate": 0.0898,
                "goals": 0,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.019,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9648,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 0.591
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0949,
                  "after": 0.0627
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0241,
                  "after": 0.019
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 71.0)",
              "stats": {
                "expected_goals": 0.0627,
                "goal_rate": 0.0898,
                "goals": 0,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.019,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9648,
                "creation_factor": 0.8,
                "fifa_overall": 71.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": 4480,
                "fifa_rank": 4913.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.0627,
                "goal_rate": 0.0898,
                "goals": 0,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.019,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0595,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9648,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0595,
                "goal_rate": 0.0898,
                "scorer_weight": 0.0605,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0707,
                "finishing_factor": 0.9648,
                "appearance_weight": 0.591,
                "weight_rank": 5,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0627,
                "goal_rate": 0.0898,
                "goals": 0,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.019,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0595,
                "projected_assists": 0,
                "assist_probability": 0.0187,
                "finishing_factor": 0.9648,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0187,
                "assist_rate": 0.0,
                "provider_weight": 0.0152,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0249,
                "creation_factor": 0.8,
                "appearance_weight": 0.591,
                "weight_rank": 10,
                "eligible_players": 14
              }
            }
          ]
        },
        "Mohamed Belloumi": {
          "player_id": 1125839,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 177,
          "market_value": 17100000,
          "stats": {
            "expected_goals": 0.0624,
            "goal_rate": 0.1154,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0677,
            "key_pass": 1,
            "rating": 6.8866,
            "minutes": 26,
            "total_pass": 26,
            "accurate_pass": 17,
            "duels_won": 9,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 12,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 55,
            "possession_lost": 18.8509,
            "dispossessed": 1.2457,
            "duels_lost": 7,
            "aerial_lost": 1,
            "total_contest": 5,
            "won_contest": 3,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "assist_rate": 0.196,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 3,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1164,
            "offsides": 0,
            "ball_carries": 15,
            "total_progression": 84,
            "progressive_carries": 3,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.588,
            "bench_expected_minutes": 25.94,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0592,
            "projected_assists": 0,
            "assist_probability": 0.0639,
            "finishing_factor": 1.1415,
            "creation_factor": 1.25,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0743,
                "expected_assists": 0.0584,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 28,
                "accurate_pass": 16,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 86,
                "rating": 8.2,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2586,
                "expected_assists": 0.235,
                "total_shots": 4,
                "shots_on_target": 0,
                "shots_off_target": 3,
                "total_pass": 39,
                "accurate_pass": 28,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 0,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 13,
                "ball_recovery": 9,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0696,
                "expected_assists": 0.1413,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 20,
                "accurate_pass": 9,
                "tackles": 4,
                "tackles_won": 4,
                "interceptions": 1,
                "duels_won": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 26,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1748,
                "expected_assists": 0.0364,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 83,
                "rating": 7.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.3457,
                "expected_assists": 0.3109,
                "total_shots": 5,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 30,
                "accurate_pass": 23,
                "key_pass": 2,
                "tackles": 6,
                "tackles_won": 3,
                "aerial_won": 1,
                "duels_won": 10,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 60,
                "rating": 8.5,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1708,
                "expected_assists": 0.0628,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 6,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 82,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0295,
                "expected_assists": 0.012,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 6,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 83,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1161,
                "expected_assists": 0.0167,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.048,
                "expected_assists": 0.0331,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 16,
                "accurate_pass": 11,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3983,
            "combined_rank_score": 1960.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 641.0,
            "sofascore_rating": 6.75,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3279.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8866,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mohamed Belloumi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Freddie Potts",
                  "ranking": 3978
                },
                {
                  "player_name": "Chupe",
                  "ranking": 3979
                },
                {
                  "player_name": "Bigas",
                  "ranking": 3980
                },
                {
                  "player_name": "Pablo Ibáñez",
                  "ranking": 3981
                },
                {
                  "player_name": "Jonny",
                  "ranking": 3982
                }
              ],
              "lower": [
                {
                  "player_name": "Jack Hendry",
                  "ranking": 3984
                },
                {
                  "player_name": "Areso",
                  "ranking": 3985
                },
                {
                  "player_name": "Gorosabel",
                  "ranking": 3986
                },
                {
                  "player_name": "Mateo Carabajal",
                  "ranking": 3987
                },
                {
                  "player_name": "Riquelme",
                  "ranking": 3988
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 9,
          "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": 9,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.942395216316985,
            "bench_appearance_prob": 0.5882906916507721,
            "market_value_adjustment": 1.0104,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (9 historical appearances) to 25.9 expected mins (appearance prob 0.59)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0797,
                "goals": 0.0969,
                "goal_rate": 0.0969,
                "shots_on_target": 0.29,
                "total_shots": 1.033,
                "expected_assists": 0.0723,
                "key_pass": 0.7642,
                "rating": 6.8866,
                "minutes": 22.0,
                "total_pass": 21.6762,
                "accurate_pass": 14.1396,
                "duels_won": 7.1444,
                "total_long_balls": 2.827,
                "accurate_long_balls": 1.0912,
                "total_opp_half_passes": 16.3679,
                "accurate_opp_half_passes": 10.3094,
                "crosses_total": 2.8619,
                "crosses_accurate": 0.5271,
                "touches": 45.9012,
                "possession_lost": 15.8217,
                "dispossessed": 1.2329,
                "duels_lost": 5.7196,
                "aerial_lost": 0.7098,
                "total_contest": 3.9251,
                "won_contest": 2.8409,
                "ball_recovery": 3.2004,
                "challenges_lost": 1.1775,
                "fouls": 1.5152,
                "fouls_drawn": 1.2235,
                "assists": 0.1645,
                "assist_rate": 0.1645,
                "interceptions": 0.7612,
                "tackles_won": 1.5273,
                "tackles": 2.5433,
                "clearances": 1.0023,
                "blocks": 0.1268,
                "big_chances_created": 0.0626,
                "big_chances_missed": 0.1019,
                "xgot": 0.1487,
                "offsides": 0.2396,
                "ball_carries": 12.6158,
                "total_progression": 70.8078,
                "progressive_carries": 2.4613,
                "shots_off_target": 0.743
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:06:26.876327+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 612,
                    "rows": 17180
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.1659,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.141,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.1199,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0736,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0532,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 0.0,
                  "accuratePass": 14.1396,
                  "expectedGoals": 0.1502,
                  "accurateOppositionHalfPasses": 10.3094,
                  "totalShots": 2.6074,
                  "totalOppositionHalfPasses": 16.3679
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07969192415475845,
                    "model_output": 0.0797,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2767
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0987
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.036
                      },
                      {
                        "name": "goals",
                        "importance": 0.0336
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.1929,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0835
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.01
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0059
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0039
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0141,
                      "total": 0.0797,
                      "log_link": true,
                      "margin_base": -1.645586,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.566904
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.095458
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.061033
                        },
                        {
                          "name": "goals",
                          "margin": 0.041284
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.038118
                        }
                      ],
                      "others_margin": -0.163772
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.09690842032432556,
                    "model_output": 0.0969,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1491
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0805
                      },
                      {
                        "name": "goals",
                        "importance": 0.056
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0343
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.1972,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0871
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0111
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0091
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0058
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0054
                        }
                      ],
                      "others": 0.0074,
                      "total": 0.0969,
                      "log_link": true,
                      "margin_base": -1.623746,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.583223
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.106303
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.096023
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.066563
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.061927
                        }
                      ],
                      "others_margin": 0.079942
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2899667024612427,
                    "model_output": 0.29,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2173
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0637
                      },
                      {
                        "name": "goals",
                        "importance": 0.0596
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0393
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.5269,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2216
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0329
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0216
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0152
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0064,
                      "total": 0.29,
                      "log_link": true,
                      "margin_base": -0.640773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.545772
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.102363
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.065916
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.049255
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.016602
                        }
                      ],
                      "others_margin": -0.022034
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.033000111579895,
                    "model_output": 1.033,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3005
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0627
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0526
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0309
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0307
                      }
                    ],
                    "decomposition": {
                      "base": 1.3756,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5503
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.2084
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0487
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0454
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0416
                        }
                      ],
                      "others": -0.0532,
                      "total": 1.033,
                      "log_link": false,
                      "margin_base": 1.375643,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.550307
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.208426
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.048737
                        },
                        {
                          "name": "rating",
                          "margin": 0.045407
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.041567
                        }
                      ],
                      "others_margin": -0.053339
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0723232701420784,
                    "model_output": 0.0723,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1287
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1119
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0634
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0522
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.051
                      }
                    ],
                    "decomposition": {
                      "base": 0.065,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0198
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0068
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0073
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0038
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0024
                        }
                      ],
                      "others": 0.0068,
                      "total": 0.0723,
                      "log_link": true,
                      "margin_base": -2.733324,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.36286
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.140915
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.130394
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.062671
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.037745
                        }
                      ],
                      "others_margin": 0.097851
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.7642405033111572,
                    "model_output": 0.7642,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1579
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1341
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0953
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.069
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.6917,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2054
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0701
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0371
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0343
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0276
                        }
                      ],
                      "others": 0.1088,
                      "total": 0.7642,
                      "log_link": true,
                      "margin_base": -0.368585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.352316
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.134719
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.064504
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.056103
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.04308
                        }
                      ],
                      "others_margin": 0.153621
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.886587619781494,
                    "model_output": 6.8866,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.048
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0462
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0455
                      },
                      {
                        "name": "rating",
                        "importance": 0.0455
                      }
                    ],
                    "decomposition": {
                      "base": 6.7733,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0956
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0789
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0305
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0296
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0233
                        }
                      ],
                      "others": 0.0598,
                      "total": 6.8866,
                      "log_link": false,
                      "margin_base": 6.773334,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.095582
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.078946
                        },
                        {
                          "name": "touches",
                          "margin": 0.030541
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.029622
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.023321
                        }
                      ],
                      "others_margin": 0.059776
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 9,
                  "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.0104, quality 0.602)",
              "stats": {
                "expected_goals": 0.0805,
                "goals": 0.0979,
                "goal_rate": 0.0979,
                "shots_on_target": 0.293,
                "total_shots": 1.0437,
                "expected_assists": 0.0731,
                "key_pass": 0.7722,
                "rating": 6.8866,
                "minutes": 22.0,
                "total_pass": 21.9016,
                "accurate_pass": 14.2867,
                "duels_won": 7.2187,
                "total_long_balls": 2.8564,
                "accurate_long_balls": 1.1025,
                "total_opp_half_passes": 16.5381,
                "accurate_opp_half_passes": 10.4166,
                "crosses_total": 2.8917,
                "crosses_accurate": 0.5326,
                "touches": 46.3786,
                "possession_lost": 15.9862,
                "dispossessed": 1.2457,
                "duels_lost": 5.7791,
                "aerial_lost": 0.7172,
                "total_contest": 3.9659,
                "won_contest": 2.8704,
                "ball_recovery": 3.2337,
                "challenges_lost": 1.1897,
                "fouls": 1.531,
                "fouls_drawn": 1.2362,
                "assists": 0.1662,
                "assist_rate": 0.1662,
                "interceptions": 0.7691,
                "tackles_won": 1.5432,
                "tackles": 2.5698,
                "clearances": 1.0127,
                "blocks": 0.1281,
                "big_chances_created": 0.0633,
                "big_chances_missed": 0.103,
                "xgot": 0.1502,
                "offsides": 0.2421,
                "ball_carries": 12.747,
                "total_progression": 71.5442,
                "progressive_carries": 2.4869,
                "shots_off_target": 0.7507
              },
              "params": {
                "market_value_eur": 17100000,
                "quality_factor": 0.6016,
                "boost_factor": 1.0104,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 22.0 to 25.9 expected minutes (appearance prob 0.59)",
              "stats": {
                "expected_goals": 0.0949,
                "goals": 0.1154,
                "goal_rate": 0.1154,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0862,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assists": 0.196,
                "assist_rate": 0.196,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1771,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94
              },
              "params": {
                "expected_minutes": 25.94,
                "projection_minutes": 22.0,
                "minutes_scale": 1.1792,
                "appearance_probability": 0.588
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0949,
                "goals": 0.1154,
                "goal_rate": 0.1154,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0862,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assists": 0.196,
                "assist_rate": 0.196,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1771,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.1154,
                "goals": 0,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0862,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assist_rate": 0.196,
                "assists": 0,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1771,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0624,
                "goal_rate": 0.1154,
                "goals": 0,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0677,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assist_rate": 0.196,
                "assists": 0,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1164,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1415,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 0.588
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0949,
                  "after": 0.0624
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0862,
                  "after": 0.0677
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 73.0)",
              "stats": {
                "expected_goals": 0.0624,
                "goal_rate": 0.1154,
                "goals": 0,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0677,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assist_rate": 0.196,
                "assists": 0,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1164,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1415,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3983,
                "fifa_rank": 3279.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.0624,
                "goal_rate": 0.1154,
                "goals": 0,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0677,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assist_rate": 0.196,
                "assists": 0,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1164,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0592,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1415,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0592,
                "goal_rate": 0.1154,
                "scorer_weight": 0.0712,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0832,
                "finishing_factor": 1.1415,
                "appearance_weight": 0.588,
                "weight_rank": 3,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0624,
                "goal_rate": 0.1154,
                "goals": 0,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0677,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assist_rate": 0.196,
                "assists": 0,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1164,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0592,
                "projected_assists": 0,
                "assist_probability": 0.0639,
                "finishing_factor": 1.1415,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0639,
                "assist_rate": 0.196,
                "provider_weight": 0.0846,
                "squad_weight_total": 0.6106,
                "weight_share": 0.1386,
                "creation_factor": 1.25,
                "appearance_weight": 0.588,
                "weight_rank": 3,
                "eligible_players": 14
              }
            }
          ]
        }
      },
      "substitutes": {
        "Lucas Herrington": {
          "player_id": 1646783,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 193,
          "market_value": 16399999,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.6448,
            "minutes": 23,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 1.0474,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0039,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 3,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.615,
            "bench_expected_minutes": 22.89,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0039,
            "finishing_factor": 1.0,
            "creation_factor": 0.9141,
            "fifa_overall": 66.0
          },
          "latest_10_games": [
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 34,
                "accurate_pass": 27,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 0,
                "clearances": 7,
                "aerial_won": 5,
                "duels_won": 7,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 14,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0233,
                "expected_assists": 0.0259,
                "total_shots": 1,
                "total_pass": 51,
                "accurate_pass": 47,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 31,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0145,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "interceptions": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 19,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 31,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 26,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 7040,
            "combined_rank_score": 5366.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 261.0,
            "sofascore_rating": 7.0909,
            "sofascore_appearances": 11.0,
            "fifa_rank": 10471.0,
            "fifa_overall": 66.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6448,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lucas Herrington",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lucas Pratto",
                  "ranking": 7035
                },
                {
                  "player_name": "Pedro Bicalho",
                  "ranking": 7036
                },
                {
                  "player_name": "Léo Vieira",
                  "ranking": 7037
                },
                {
                  "player_name": "Peter Žulj",
                  "ranking": 7038
                },
                {
                  "player_name": "Caju",
                  "ranking": 7039
                }
              ],
              "lower": [
                {
                  "player_name": "Bernard Tekpetey",
                  "ranking": 7041
                },
                {
                  "player_name": "Jhojan Torres",
                  "ranking": 7042
                },
                {
                  "player_name": "Olivier Verdon",
                  "ranking": 7043
                },
                {
                  "player_name": "Alan Soñora",
                  "ranking": 7044
                },
                {
                  "player_name": "Diego Coelho",
                  "ranking": 7045
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.695,
          "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.695,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.89,
            "bench_appearance_prob": 0.615,
            "market_value_adjustment": 1.0112,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 30.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0467
            },
            "rationale": "Bench projection scaled from XGBoost D_service (7 historical appearances) to 22.9 expected mins (appearance prob 0.61); FBref playing time empirical prior: 2.0 sub appearances, 30.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3454,
                "tackles": 0.5206,
                "tackles_won": 0.2747,
                "clearances": 1.4463,
                "aerial_won": 0.7815,
                "total_shots": 0.1608,
                "rating": 6.6448,
                "minutes": 23.89,
                "total_pass": 7.6311,
                "accurate_pass": 6.55,
                "duels_won": 0.8449,
                "total_long_balls": 0.2267,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.442,
                "accurate_own_half_passes": 4.442,
                "total_opp_half_passes": 3.1891,
                "accurate_opp_half_passes": 2.108,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.442,
                "possession_lost": 1.0811,
                "dispossessed": 0.0,
                "duels_lost": 0.8473,
                "aerial_lost": 0.5806,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2667,
                "challenges_lost": 0.0,
                "fouls": 0.2667,
                "fouls_drawn": 0.0,
                "blocks": 0.2667,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0048,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8073,
                "total_progression": 3.0346,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1608
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:04:53.735026+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 631,
                    "rows": 22117
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.1356,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1152,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.098,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0833,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 3.337,
                  "aerialWon": 1.6727,
                  "totalClearance_p90": 4.9062,
                  "totalTackle": 1.0916,
                  "totalTackle_p90": 1.8976
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.34543514251708984,
                    "model_output": 0.3454,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2892
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0467
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0256
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0216
                      }
                    ],
                    "decomposition": {
                      "base": 0.8711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4628
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0481
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0105
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.01
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0056
                        }
                      ],
                      "others": -0.0097,
                      "total": 0.3454,
                      "log_link": true,
                      "margin_base": -0.137969,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.757769
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.125453
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.028759
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.027415
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.015765
                        }
                      ],
                      "others_margin": -0.027339
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5206279158592224,
                    "model_output": 0.5206,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2446
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0555
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0437
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0249
                      }
                    ],
                    "decomposition": {
                      "base": 1.3875,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7748
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.029
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0151
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.014
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0134
                        }
                      ],
                      "others": -0.0474,
                      "total": 0.5206,
                      "log_link": true,
                      "margin_base": 0.327503,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.817424
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.048481
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.026134
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.024851
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.023906
                        }
                      ],
                      "others_margin": -0.087239
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.2746671438217163,
                    "model_output": 0.2747,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1951
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0637
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0498
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0427
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 0.8482,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4897
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0187
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0115
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.008
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0076
                        }
                      ],
                      "others": -0.038,
                      "total": 0.2747,
                      "log_link": true,
                      "margin_base": -0.164613,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.861048
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.053663
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.034432
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.024817
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.023992
                        }
                      ],
                      "others_margin": -0.12963
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.4462584257125854,
                    "model_output": 1.4463,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2927
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1441
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.033
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0239
                      }
                    ],
                    "decomposition": {
                      "base": 3.4157,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.2526
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0857
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0803
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0496
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0503
                        }
                      ],
                      "others": 0.1887,
                      "total": 1.4463,
                      "log_link": true,
                      "margin_base": 1.228383,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.077259
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.076566
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.071924
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.041983
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.04084
                        }
                      ],
                      "others_margin": 0.139674
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7814813256263733,
                    "model_output": 0.7815,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1566
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1557
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0794
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0422
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.027
                      }
                    ],
                    "decomposition": {
                      "base": 1.3697,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.809
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1363
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": -0.0311
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.029
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0275
                        }
                      ],
                      "others": 0.0591,
                      "total": 0.7815,
                      "log_link": true,
                      "margin_base": 0.314594,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.893176
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.217671
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": -0.045602
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.042675
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.038765
                        }
                      ],
                      "others_margin": 0.07851
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.1608300656080246,
                    "model_output": 0.1608,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0952
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0683
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0339
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0311
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4812,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1687
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0702
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0181
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.01
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0084
                        }
                      ],
                      "others": -0.045,
                      "total": 0.1608,
                      "log_link": false,
                      "margin_base": 0.481248,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.168672
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.070208
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.01806
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.009975
                        },
                        {
                          "name": "rating",
                          "margin": -0.008422
                        }
                      ],
                      "others_margin": -0.045081
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.644750595092773,
                    "model_output": 6.6448,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "accuratePass",
                        "importance": 0.0681
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.063
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.057
                      },
                      {
                        "name": "rating",
                        "importance": 0.0377
                      },
                      {
                        "name": "touches",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 6.7988,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0448
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0235
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0161
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.016
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0119
                        }
                      ],
                      "others": -0.0417,
                      "total": 6.6448,
                      "log_link": false,
                      "margin_base": 6.798781,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.044789
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.023486
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.016113
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.016007
                        },
                        {
                          "name": "rating",
                          "margin": -0.011941
                        }
                      ],
                      "others_margin": -0.041694
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 7,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0112, quality 0.594)",
              "stats": {
                "interceptions": 0.3493,
                "tackles": 0.5265,
                "tackles_won": 0.2777,
                "clearances": 1.4625,
                "aerial_won": 0.7902,
                "total_shots": 0.1626,
                "rating": 6.6448,
                "minutes": 23.89,
                "total_pass": 7.7166,
                "accurate_pass": 6.6234,
                "duels_won": 0.8544,
                "total_long_balls": 0.2292,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.4918,
                "accurate_own_half_passes": 4.4918,
                "total_opp_half_passes": 3.2248,
                "accurate_opp_half_passes": 2.1316,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.559,
                "possession_lost": 1.0932,
                "dispossessed": 0.0,
                "duels_lost": 0.8568,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2697,
                "challenges_lost": 0.0,
                "fouls": 0.2697,
                "fouls_drawn": 0.0,
                "blocks": 0.2697,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0049,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8275,
                "total_progression": 3.0686,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1626
              },
              "params": {
                "market_value_eur": 16399999,
                "quality_factor": 0.5942,
                "boost_factor": 1.0112,
                "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.0126)",
              "stats": {
                "interceptions": 0.3449,
                "tackles": 0.5265,
                "tackles_won": 0.2742,
                "clearances": 1.4625,
                "aerial_won": 0.7902,
                "total_shots": 0.1605,
                "rating": 6.6448,
                "minutes": 23.89,
                "total_pass": 7.7166,
                "accurate_pass": 6.6234,
                "duels_won": 0.8544,
                "total_long_balls": 0.2292,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.4918,
                "accurate_own_half_passes": 4.4918,
                "total_opp_half_passes": 3.2248,
                "accurate_opp_half_passes": 2.1316,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.559,
                "possession_lost": 1.0932,
                "dispossessed": 0.0,
                "duels_lost": 0.8568,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2697,
                "challenges_lost": 0.0,
                "fouls": 0.2663,
                "fouls_drawn": 0.0,
                "blocks": 0.2697,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0049,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8275,
                "total_progression": 3.0686,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1626
              },
              "params": {
                "blend_weight": 0.0126,
                "history_matches": 7,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2654,
                "prior_reliability": 0.0467,
                "competition": "Premier League",
                "squad": "Hull City"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.9 to 22.9 expected minutes (appearance prob 0.61)",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0047,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89
              },
              "params": {
                "expected_minutes": 22.89,
                "projection_minutes": 23.89,
                "minutes_scale": 0.9581,
                "appearance_probability": 0.615
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0047,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0047,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0039,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.9141
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 0.615
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 66.0)",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0039,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.9141,
                "fifa_overall": 66.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": 7040,
                "fifa_rank": 10471.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 66.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0039,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.9141,
                "fifa_overall": 66.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "goal_rate": 0.0,
                "scorer_weight": 0.001,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0012,
                "finishing_factor": 1.0,
                "appearance_weight": 0.615,
                "weight_rank": 14,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.3305,
                "tackles": 0.5045,
                "tackles_won": 0.2627,
                "clearances": 1.4013,
                "aerial_won": 0.7571,
                "total_shots": 0.1558,
                "rating": 6.6448,
                "minutes": 22.89,
                "total_pass": 7.3936,
                "accurate_pass": 6.3462,
                "duels_won": 0.8186,
                "total_long_balls": 0.2196,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.3038,
                "accurate_own_half_passes": 4.3038,
                "total_opp_half_passes": 3.0898,
                "accurate_opp_half_passes": 2.0424,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.117,
                "possession_lost": 1.0474,
                "dispossessed": 0.0,
                "duels_lost": 0.8209,
                "aerial_lost": 0.5871,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2584,
                "challenges_lost": 0.0,
                "fouls": 0.2552,
                "fouls_drawn": 0.0,
                "blocks": 0.2584,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0039,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.751,
                "total_progression": 2.9402,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1558,
                "bench_appearance_probability": 0.615,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0039,
                "finishing_factor": 1.0,
                "creation_factor": 0.9141,
                "fifa_overall": 66.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0039,
                "assist_rate": 0.0,
                "provider_weight": 0.0036,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0058,
                "creation_factor": 0.9141,
                "appearance_weight": 0.615,
                "weight_rank": 14,
                "eligible_players": 14
              }
            }
          ]
        },
        "Robinio Vaz": {
          "player_id": 1514800,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 47,
          "height": 185,
          "market_value": 18700000,
          "stats": {
            "expected_goals": 0.0627,
            "goal_rate": 0.0898,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.019,
            "key_pass": 0,
            "rating": 6.5807,
            "minutes": 26,
            "total_pass": 5,
            "accurate_pass": 3,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 4.0143,
            "dispossessed": 0.5194,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 20,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.591,
            "bench_expected_minutes": 26.01,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0595,
            "projected_assists": 0,
            "assist_probability": 0.0187,
            "finishing_factor": 0.9648,
            "creation_factor": 0.8,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 8,
                "rating": 6.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 1,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 22,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0091,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 8,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0041,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4480,
            "combined_rank_score": 2500.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4913.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5807,
            "source_file": "data/player_rankings.csv",
            "player_name": "Robinio Vaz",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Christopher Bonsu Baah",
                  "ranking": 4475
                },
                {
                  "player_name": "Valentin Atangana",
                  "ranking": 4476
                },
                {
                  "player_name": "Alex Luna",
                  "ranking": 4477
                },
                {
                  "player_name": "Matt Crooks",
                  "ranking": 4478
                },
                {
                  "player_name": "Lautaro Rivero",
                  "ranking": 4479
                }
              ],
              "lower": [
                {
                  "player_name": "Franco Vázquez",
                  "ranking": 4481
                },
                {
                  "player_name": "Fraser Forster",
                  "ranking": 4482
                },
                {
                  "player_name": "Rodrigo Rey",
                  "ranking": 4483
                },
                {
                  "player_name": "Conan Ledesma",
                  "ranking": 4484
                },
                {
                  "player_name": "Rafael Santos Borré",
                  "ranking": 4485
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.562,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.562,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 26.007630757726062,
            "bench_appearance_prob": 0.5912559435330029,
            "market_value_adjustment": 1.017,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (5 historical appearances) to 26.0 expected mins (appearance prob 0.59)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0622,
                "goals": 0.0589,
                "goal_rate": 0.0589,
                "shots_on_target": 0.2377,
                "total_shots": 0.63,
                "expected_assists": 0.0158,
                "key_pass": 0.2483,
                "rating": 6.5807,
                "minutes": 14.47,
                "total_pass": 2.9936,
                "accurate_pass": 2.2384,
                "duels_won": 1.2231,
                "total_long_balls": 0.1656,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5291,
                "accurate_opp_half_passes": 1.9687,
                "crosses_total": 0.4352,
                "crosses_accurate": 0.0,
                "touches": 6.1701,
                "possession_lost": 2.6315,
                "dispossessed": 0.5107,
                "duels_lost": 1.5046,
                "aerial_lost": 0.1656,
                "total_contest": 0.2292,
                "won_contest": 0.0,
                "ball_recovery": 1.0344,
                "challenges_lost": 0.2292,
                "fouls": 0.3699,
                "fouls_drawn": 0.9939,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.7529,
                "total_progression": 13.0147,
                "progressive_carries": 0.5393,
                "shots_off_target": 0.3923
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:06:26.876327+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 612,
                    "rows": 17180
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.2696,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.2292,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1948,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1656,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 0.0,
                  "accuratePass": 2.2384,
                  "expectedGoals": 0.0,
                  "accurateOppositionHalfPasses": 1.9687,
                  "totalShots": 0.0,
                  "totalOppositionHalfPasses": 2.5291
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06221567839384079,
                    "model_output": 0.0622,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2767
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0987
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.036
                      },
                      {
                        "name": "goals",
                        "importance": 0.0336
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.1929,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.086
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0158
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0072
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0042
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0032
                        }
                      ],
                      "others": -0.0143,
                      "total": 0.0622,
                      "log_link": true,
                      "margin_base": -1.645586,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.590445
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.160219
                        },
                        {
                          "name": "goals",
                          "margin": -0.082784
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.051954
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.040541
                        }
                      ],
                      "others_margin": -0.205619
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.058886099606752396,
                    "model_output": 0.0589,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1491
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0805
                      },
                      {
                        "name": "goals",
                        "importance": 0.056
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0343
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.1972,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.075
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0148
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0094
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.008
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0058
                        }
                      ],
                      "others": -0.0253,
                      "total": 0.0589,
                      "log_link": true,
                      "margin_base": -1.623746,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.479012
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.12921
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.091767
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.085216
                        },
                        {
                          "name": "goals",
                          "margin": -0.067004
                        }
                      ],
                      "others_margin": -0.356196
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2376532256603241,
                    "model_output": 0.2377,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2173
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0637
                      },
                      {
                        "name": "goals",
                        "importance": 0.0596
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0393
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.5269,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2047
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0269
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0142
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0126
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0116
                        }
                      ],
                      "others": -0.0192,
                      "total": 0.2377,
                      "log_link": true,
                      "margin_base": -0.640773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.491909
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.08711
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.049228
                        },
                        {
                          "name": "goals",
                          "margin": -0.04579
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.044197
                        }
                      ],
                      "others_margin": -0.077936
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6299857497215271,
                    "model_output": 0.63,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3005
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0627
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0526
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0309
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0307
                      }
                    ],
                    "decomposition": {
                      "base": 1.3756,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4439
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1164
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0526
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.04
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0221
                        }
                      ],
                      "others": -0.0706,
                      "total": 0.63,
                      "log_link": false,
                      "margin_base": 1.375643,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.443868
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.116404
                        },
                        {
                          "name": "goals",
                          "margin": -0.052554
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.040024
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.022079
                        }
                      ],
                      "others_margin": -0.070728
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.015811195597052574,
                    "model_output": 0.0158,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1287
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1119
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0634
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0522
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.051
                      }
                    ],
                    "decomposition": {
                      "base": 0.065,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.021
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0138
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0037
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.003
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0025
                        }
                      ],
                      "others": -0.0052,
                      "total": 0.0158,
                      "log_link": true,
                      "margin_base": -2.733324,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.38909
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.375142
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.129981
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.119212
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.109637
                        }
                      ],
                      "others_margin": -0.290651
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.24831610918045044,
                    "model_output": 0.2483,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1579
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1341
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0953
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.069
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.6917,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2784
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0372
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0295
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0252
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0227
                        }
                      ],
                      "others": -0.0504,
                      "total": 0.2483,
                      "log_link": true,
                      "margin_base": -0.368585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.514995
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.094248
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.081686
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.075543
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.073131
                        }
                      ],
                      "others_margin": -0.184866
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.580746173858643,
                    "model_output": 6.5807,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.048
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0462
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0455
                      },
                      {
                        "name": "rating",
                        "importance": 0.0455
                      }
                    ],
                    "decomposition": {
                      "base": 6.7733,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.054
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0307
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0146
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0114
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0107
                        }
                      ],
                      "others": -0.0712,
                      "total": 6.5807,
                      "log_link": false,
                      "margin_base": 6.773334,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.054011
                        },
                        {
                          "name": "rating",
                          "margin": -0.03072
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014643
                        },
                        {
                          "name": "touches",
                          "margin": -0.011433
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.010713
                        }
                      ],
                      "others_margin": -0.071071
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 5,
                  "role_matches": 5,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0170, quality 0.618)",
              "stats": {
                "expected_goals": 0.0633,
                "goals": 0.0599,
                "goal_rate": 0.0599,
                "shots_on_target": 0.2417,
                "total_shots": 0.6407,
                "expected_assists": 0.0161,
                "key_pass": 0.2525,
                "rating": 6.5807,
                "minutes": 14.47,
                "total_pass": 3.0445,
                "accurate_pass": 2.2765,
                "duels_won": 1.2439,
                "total_long_balls": 0.1684,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5721,
                "accurate_opp_half_passes": 2.0022,
                "crosses_total": 0.4426,
                "crosses_accurate": 0.0,
                "touches": 6.275,
                "possession_lost": 2.6762,
                "dispossessed": 0.5194,
                "duels_lost": 1.5302,
                "aerial_lost": 0.1684,
                "total_contest": 0.2331,
                "won_contest": 0.0,
                "ball_recovery": 1.052,
                "challenges_lost": 0.2331,
                "fouls": 0.3762,
                "fouls_drawn": 1.0108,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.7827,
                "total_progression": 13.2359,
                "progressive_carries": 0.5485,
                "shots_off_target": 0.399
              },
              "params": {
                "market_value_eur": 18700000,
                "quality_factor": 0.6181,
                "boost_factor": 1.017,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 14.5 to 26.0 expected minutes (appearance prob 0.59)",
              "stats": {
                "expected_goals": 0.0949,
                "goals": 0.0898,
                "goal_rate": 0.0898,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.0241,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01
              },
              "params": {
                "expected_minutes": 26.01,
                "projection_minutes": 14.47,
                "minutes_scale": 1.5,
                "appearance_probability": 0.591
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0949,
                "goals": 0.0898,
                "goal_rate": 0.0898,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.0241,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.0898,
                "goals": 0,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.0241,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0627,
                "goal_rate": 0.0898,
                "goals": 0,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.019,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9648,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 0.591
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0949,
                  "after": 0.0627
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0241,
                  "after": 0.019
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 71.0)",
              "stats": {
                "expected_goals": 0.0627,
                "goal_rate": 0.0898,
                "goals": 0,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.019,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9648,
                "creation_factor": 0.8,
                "fifa_overall": 71.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": 4480,
                "fifa_rank": 4913.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.0627,
                "goal_rate": 0.0898,
                "goals": 0,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.019,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0595,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9648,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0595,
                "goal_rate": 0.0898,
                "scorer_weight": 0.0605,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0707,
                "finishing_factor": 0.9648,
                "appearance_weight": 0.591,
                "weight_rank": 5,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0627,
                "goal_rate": 0.0898,
                "goals": 0,
                "shots_on_target": 0.3625,
                "total_shots": 0.9611,
                "expected_assists": 0.019,
                "key_pass": 0.3788,
                "rating": 6.5807,
                "minutes": 26.01,
                "total_pass": 4.5668,
                "accurate_pass": 3.4147,
                "duels_won": 1.8659,
                "total_long_balls": 0.2526,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8581,
                "accurate_opp_half_passes": 3.0033,
                "crosses_total": 0.6639,
                "crosses_accurate": 0.0,
                "touches": 9.4125,
                "possession_lost": 4.0143,
                "dispossessed": 0.5194,
                "duels_lost": 2.2953,
                "aerial_lost": 0.1684,
                "total_contest": 0.3497,
                "won_contest": 0.0,
                "ball_recovery": 1.578,
                "challenges_lost": 0.2331,
                "fouls": 0.5643,
                "fouls_drawn": 1.5162,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.674,
                "total_progression": 19.8539,
                "progressive_carries": 0.8227,
                "shots_off_target": 0.5985,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0595,
                "projected_assists": 0,
                "assist_probability": 0.0187,
                "finishing_factor": 0.9648,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0187,
                "assist_rate": 0.0,
                "provider_weight": 0.0152,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0249,
                "creation_factor": 0.8,
                "appearance_weight": 0.591,
                "weight_rank": 10,
                "eligible_players": 14
              }
            }
          ]
        },
        "Mohamed Belloumi": {
          "player_id": 1125839,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 177,
          "market_value": 17100000,
          "stats": {
            "expected_goals": 0.0624,
            "goal_rate": 0.1154,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0677,
            "key_pass": 1,
            "rating": 6.8866,
            "minutes": 26,
            "total_pass": 26,
            "accurate_pass": 17,
            "duels_won": 9,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 12,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 55,
            "possession_lost": 18.8509,
            "dispossessed": 1.2457,
            "duels_lost": 7,
            "aerial_lost": 1,
            "total_contest": 5,
            "won_contest": 3,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "assist_rate": 0.196,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 3,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1164,
            "offsides": 0,
            "ball_carries": 15,
            "total_progression": 84,
            "progressive_carries": 3,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.588,
            "bench_expected_minutes": 25.94,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0592,
            "projected_assists": 0,
            "assist_probability": 0.0639,
            "finishing_factor": 1.1415,
            "creation_factor": 1.25,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363906.0,
              "match_date": "2026-10-31",
              "home_team": "Hull City",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0743,
                "expected_assists": 0.0584,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 28,
                "accurate_pass": 16,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363896.0,
              "match_date": "2026-10-25",
              "home_team": "Hull City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 86,
                "rating": 8.2,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2586,
                "expected_assists": 0.235,
                "total_shots": 4,
                "shots_on_target": 0,
                "shots_off_target": 3,
                "total_pass": 39,
                "accurate_pass": 28,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 0,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 13,
                "ball_recovery": 9,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363885.0,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0696,
                "expected_assists": 0.1413,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 20,
                "accurate_pass": 9,
                "tackles": 4,
                "tackles_won": 4,
                "interceptions": 1,
                "duels_won": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363876.0,
              "match_date": "2026-10-11",
              "home_team": "Hull City",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Everton",
              "stats": {
                "minutes": 26,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1748,
                "expected_assists": 0.0364,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363868.0,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 83,
                "rating": 7.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.3457,
                "expected_assists": 0.3109,
                "total_shots": 5,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 30,
                "accurate_pass": 23,
                "key_pass": 2,
                "tackles": 6,
                "tackles_won": 3,
                "aerial_won": 1,
                "duels_won": 10,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641.0,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 60,
                "rating": 8.5,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1708,
                "expected_assists": 0.0628,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 6,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262.0,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 82,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0295,
                "expected_assists": 0.012,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 6,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 83,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1161,
                "expected_assists": 0.0167,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634.0,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.048,
                "expected_assists": 0.0331,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 16,
                "accurate_pass": 11,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3983,
            "combined_rank_score": 1960.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 641.0,
            "sofascore_rating": 6.75,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3279.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8866,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mohamed Belloumi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Freddie Potts",
                  "ranking": 3978
                },
                {
                  "player_name": "Chupe",
                  "ranking": 3979
                },
                {
                  "player_name": "Bigas",
                  "ranking": 3980
                },
                {
                  "player_name": "Pablo Ibáñez",
                  "ranking": 3981
                },
                {
                  "player_name": "Jonny",
                  "ranking": 3982
                }
              ],
              "lower": [
                {
                  "player_name": "Jack Hendry",
                  "ranking": 3984
                },
                {
                  "player_name": "Areso",
                  "ranking": 3985
                },
                {
                  "player_name": "Gorosabel",
                  "ranking": 3986
                },
                {
                  "player_name": "Mateo Carabajal",
                  "ranking": 3987
                },
                {
                  "player_name": "Riquelme",
                  "ranking": 3988
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 9,
          "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": 9,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.942395216316985,
            "bench_appearance_prob": 0.5882906916507721,
            "market_value_adjustment": 1.0104,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (9 historical appearances) to 25.9 expected mins (appearance prob 0.59)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0797,
                "goals": 0.0969,
                "goal_rate": 0.0969,
                "shots_on_target": 0.29,
                "total_shots": 1.033,
                "expected_assists": 0.0723,
                "key_pass": 0.7642,
                "rating": 6.8866,
                "minutes": 22.0,
                "total_pass": 21.6762,
                "accurate_pass": 14.1396,
                "duels_won": 7.1444,
                "total_long_balls": 2.827,
                "accurate_long_balls": 1.0912,
                "total_opp_half_passes": 16.3679,
                "accurate_opp_half_passes": 10.3094,
                "crosses_total": 2.8619,
                "crosses_accurate": 0.5271,
                "touches": 45.9012,
                "possession_lost": 15.8217,
                "dispossessed": 1.2329,
                "duels_lost": 5.7196,
                "aerial_lost": 0.7098,
                "total_contest": 3.9251,
                "won_contest": 2.8409,
                "ball_recovery": 3.2004,
                "challenges_lost": 1.1775,
                "fouls": 1.5152,
                "fouls_drawn": 1.2235,
                "assists": 0.1645,
                "assist_rate": 0.1645,
                "interceptions": 0.7612,
                "tackles_won": 1.5273,
                "tackles": 2.5433,
                "clearances": 1.0023,
                "blocks": 0.1268,
                "big_chances_created": 0.0626,
                "big_chances_missed": 0.1019,
                "xgot": 0.1487,
                "offsides": 0.2396,
                "ball_carries": 12.6158,
                "total_progression": 70.8078,
                "progressive_carries": 2.4613,
                "shots_off_target": 0.743
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-11-03T11:06:26.876327+00:00",
                  "trained_on": {
                    "matches": 1441,
                    "players": 612,
                    "rows": 17180
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-31",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-10-25",
                    "opponent": "Brentford",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.1659,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.141,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Everton",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.1199,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Newcastle United",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0736,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0532,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 0.0,
                  "accuratePass": 14.1396,
                  "expectedGoals": 0.1502,
                  "accurateOppositionHalfPasses": 10.3094,
                  "totalShots": 2.6074,
                  "totalOppositionHalfPasses": 16.3679
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07969192415475845,
                    "model_output": 0.0797,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2767
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0987
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.036
                      },
                      {
                        "name": "goals",
                        "importance": 0.0336
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.1929,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0835
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.01
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0059
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0039
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0141,
                      "total": 0.0797,
                      "log_link": true,
                      "margin_base": -1.645586,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.566904
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.095458
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.061033
                        },
                        {
                          "name": "goals",
                          "margin": 0.041284
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.038118
                        }
                      ],
                      "others_margin": -0.163772
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.09690842032432556,
                    "model_output": 0.0969,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1491
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0805
                      },
                      {
                        "name": "goals",
                        "importance": 0.056
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0343
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.1972,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0871
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0111
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0091
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0058
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0054
                        }
                      ],
                      "others": 0.0074,
                      "total": 0.0969,
                      "log_link": true,
                      "margin_base": -1.623746,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.583223
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.106303
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.096023
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.066563
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.061927
                        }
                      ],
                      "others_margin": 0.079942
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2899667024612427,
                    "model_output": 0.29,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2173
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0637
                      },
                      {
                        "name": "goals",
                        "importance": 0.0596
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0393
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.5269,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2216
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0329
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0216
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0152
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0064,
                      "total": 0.29,
                      "log_link": true,
                      "margin_base": -0.640773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.545772
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.102363
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.065916
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.049255
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.016602
                        }
                      ],
                      "others_margin": -0.022034
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.033000111579895,
                    "model_output": 1.033,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3005
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0627
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0526
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0309
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0307
                      }
                    ],
                    "decomposition": {
                      "base": 1.3756,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5503
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.2084
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0487
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0454
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0416
                        }
                      ],
                      "others": -0.0532,
                      "total": 1.033,
                      "log_link": false,
                      "margin_base": 1.375643,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.550307
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.208426
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.048737
                        },
                        {
                          "name": "rating",
                          "margin": 0.045407
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.041567
                        }
                      ],
                      "others_margin": -0.053339
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0723232701420784,
                    "model_output": 0.0723,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1287
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1119
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0634
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0522
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.051
                      }
                    ],
                    "decomposition": {
                      "base": 0.065,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0198
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0068
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0073
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0038
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0024
                        }
                      ],
                      "others": 0.0068,
                      "total": 0.0723,
                      "log_link": true,
                      "margin_base": -2.733324,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.36286
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.140915
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.130394
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.062671
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.037745
                        }
                      ],
                      "others_margin": 0.097851
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.7642405033111572,
                    "model_output": 0.7642,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1579
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1341
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0953
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.069
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.6917,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2054
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0701
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0371
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0343
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0276
                        }
                      ],
                      "others": 0.1088,
                      "total": 0.7642,
                      "log_link": true,
                      "margin_base": -0.368585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.352316
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.134719
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.064504
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.056103
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.04308
                        }
                      ],
                      "others_margin": 0.153621
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.886587619781494,
                    "model_output": 6.8866,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.048
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0462
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0455
                      },
                      {
                        "name": "rating",
                        "importance": 0.0455
                      }
                    ],
                    "decomposition": {
                      "base": 6.7733,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0956
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0789
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0305
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0296
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0233
                        }
                      ],
                      "others": 0.0598,
                      "total": 6.8866,
                      "log_link": false,
                      "margin_base": 6.773334,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.095582
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.078946
                        },
                        {
                          "name": "touches",
                          "margin": 0.030541
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.029622
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.023321
                        }
                      ],
                      "others_margin": 0.059776
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 9,
                  "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.0104, quality 0.602)",
              "stats": {
                "expected_goals": 0.0805,
                "goals": 0.0979,
                "goal_rate": 0.0979,
                "shots_on_target": 0.293,
                "total_shots": 1.0437,
                "expected_assists": 0.0731,
                "key_pass": 0.7722,
                "rating": 6.8866,
                "minutes": 22.0,
                "total_pass": 21.9016,
                "accurate_pass": 14.2867,
                "duels_won": 7.2187,
                "total_long_balls": 2.8564,
                "accurate_long_balls": 1.1025,
                "total_opp_half_passes": 16.5381,
                "accurate_opp_half_passes": 10.4166,
                "crosses_total": 2.8917,
                "crosses_accurate": 0.5326,
                "touches": 46.3786,
                "possession_lost": 15.9862,
                "dispossessed": 1.2457,
                "duels_lost": 5.7791,
                "aerial_lost": 0.7172,
                "total_contest": 3.9659,
                "won_contest": 2.8704,
                "ball_recovery": 3.2337,
                "challenges_lost": 1.1897,
                "fouls": 1.531,
                "fouls_drawn": 1.2362,
                "assists": 0.1662,
                "assist_rate": 0.1662,
                "interceptions": 0.7691,
                "tackles_won": 1.5432,
                "tackles": 2.5698,
                "clearances": 1.0127,
                "blocks": 0.1281,
                "big_chances_created": 0.0633,
                "big_chances_missed": 0.103,
                "xgot": 0.1502,
                "offsides": 0.2421,
                "ball_carries": 12.747,
                "total_progression": 71.5442,
                "progressive_carries": 2.4869,
                "shots_off_target": 0.7507
              },
              "params": {
                "market_value_eur": 17100000,
                "quality_factor": 0.6016,
                "boost_factor": 1.0104,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 22.0 to 25.9 expected minutes (appearance prob 0.59)",
              "stats": {
                "expected_goals": 0.0949,
                "goals": 0.1154,
                "goal_rate": 0.1154,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0862,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assists": 0.196,
                "assist_rate": 0.196,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1771,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94
              },
              "params": {
                "expected_minutes": 25.94,
                "projection_minutes": 22.0,
                "minutes_scale": 1.1792,
                "appearance_probability": 0.588
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0949,
                "goals": 0.1154,
                "goal_rate": 0.1154,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0862,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assists": 0.196,
                "assist_rate": 0.196,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1771,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.1154,
                "goals": 0,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0862,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assist_rate": 0.196,
                "assists": 0,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1771,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0624,
                "goal_rate": 0.1154,
                "goals": 0,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0677,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assist_rate": 0.196,
                "assists": 0,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1164,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1415,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 0.588
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0949,
                  "after": 0.0624
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0862,
                  "after": 0.0677
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 73.0)",
              "stats": {
                "expected_goals": 0.0624,
                "goal_rate": 0.1154,
                "goals": 0,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0677,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assist_rate": 0.196,
                "assists": 0,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1164,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1415,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3983,
                "fifa_rank": 3279.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.0624,
                "goal_rate": 0.1154,
                "goals": 0,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0677,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assist_rate": 0.196,
                "assists": 0,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1164,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0592,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1415,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0592,
                "goal_rate": 0.1154,
                "scorer_weight": 0.0712,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0832,
                "finishing_factor": 1.1415,
                "appearance_weight": 0.588,
                "weight_rank": 3,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0624,
                "goal_rate": 0.1154,
                "goals": 0,
                "shots_on_target": 0.3455,
                "total_shots": 1.2307,
                "expected_assists": 0.0677,
                "key_pass": 0.9106,
                "rating": 6.8866,
                "minutes": 25.94,
                "total_pass": 25.8264,
                "accurate_pass": 16.8469,
                "duels_won": 8.5123,
                "total_long_balls": 3.3683,
                "accurate_long_balls": 1.3001,
                "total_opp_half_passes": 19.5017,
                "accurate_opp_half_passes": 12.2833,
                "crosses_total": 3.4099,
                "crosses_accurate": 0.628,
                "touches": 54.6896,
                "possession_lost": 18.8509,
                "dispossessed": 1.2457,
                "duels_lost": 6.8147,
                "aerial_lost": 0.7172,
                "total_contest": 4.6766,
                "won_contest": 3.3848,
                "ball_recovery": 3.8132,
                "challenges_lost": 1.1897,
                "fouls": 1.8054,
                "fouls_drawn": 1.4577,
                "assist_rate": 0.196,
                "assists": 0,
                "interceptions": 0.9069,
                "tackles_won": 1.8197,
                "tackles": 3.0303,
                "clearances": 1.1942,
                "blocks": 0.1511,
                "big_chances_created": 0.0746,
                "big_chances_missed": 0.1215,
                "xgot": 0.1164,
                "offsides": 0.2421,
                "ball_carries": 15.0313,
                "total_progression": 84.3649,
                "progressive_carries": 2.9326,
                "shots_off_target": 0.8852,
                "bench_appearance_probability": 0.588,
                "bench_expected_minutes": 25.94,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0592,
                "projected_assists": 0,
                "assist_probability": 0.0639,
                "finishing_factor": 1.1415,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0639,
                "assist_rate": 0.196,
                "provider_weight": 0.0846,
                "squad_weight_total": 0.6106,
                "weight_share": 0.1386,
                "creation_factor": 1.25,
                "appearance_weight": 0.588,
                "weight_rank": 3,
                "eligible_players": 14
              }
            }
          ]
        },
        "Christos Mouzakitis": {
          "player_id": 1416540,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 36,
          "height": 178,
          "market_value": 21000000,
          "stats": {
            "key_pass": 1,
            "assist_rate": 0.038,
            "assists": 0,
            "expected_assists": 0.0309,
            "expected_goals": 0.0166,
            "total_shots": 0,
            "total_pass": 15,
            "accurate_pass": 12,
            "ball_recovery": 2,
            "duels_won": 2,
            "rating": 7.2,
            "minutes": 23,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 2.4043,
            "dispossessed": 0.9,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0202,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0112,
            "ball_carries": 9,
            "total_progression": 23,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.535,
            "bench_expected_minutes": 22.78,
            "projected_substitution_order": 4,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.854,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0163,
            "projected_assists": 0,
            "assist_probability": 0.03,
            "finishing_factor": 0.9023,
            "creation_factor": 0.9432,
            "fifa_overall": 73.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 4143,
            "combined_rank_score": 2149.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 745.0,
            "sofascore_rating": 6.6667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 3554.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.2,
            "source_file": "data/player_rankings.csv",
            "player_name": "Christos Mouzakitis",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nicolás Valentini",
                  "ranking": 4138
                },
                {
                  "player_name": "Borna Sosa",
                  "ranking": 4139
                },
                {
                  "player_name": "Nathan Broadhead",
                  "ranking": 4140
                },
                {
                  "player_name": "Fábio Cardoso",
                  "ranking": 4141
                },
                {
                  "player_name": "Jorge Sánchez",
                  "ranking": 4142
                }
              ],
              "lower": [
                {
                  "player_name": "Sammie Szmodics",
                  "ranking": 4144
                },
                {
                  "player_name": "Mathias Honsak",
                  "ranking": 4145
                },
                {
                  "player_name": "Dan Neil",
                  "ranking": 4146
                },
                {
                  "player_name": "Juan Cruz",
                  "ranking": 4147
                },
                {
                  "player_name": "Lukas Petkov",
                  "ranking": 4148
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "M_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 22.77746860076133,
            "bench_appearance_prob": 0.5353394818527877,
            "market_value_adjustment": 0.6408,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€21,000,000) scaled to 22.8 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position M (quality 0.64)",
              "stats": {
                "key_pass": 2.1,
                "assists": 0.15,
                "assist_rate": 0.15,
                "expected_assists": 0.171,
                "expected_goals": 0.11,
                "total_shots": 1.7,
                "total_pass": 58.0,
                "accurate_pass": 47.0,
                "ball_recovery": 6.0,
                "duels_won": 7.0,
                "rating": 7.2,
                "minutes": 90.0,
                "total_long_balls": 5.0,
                "accurate_long_balls": 3.0,
                "total_own_half_passes": 24.0,
                "accurate_own_half_passes": 19.0,
                "total_opp_half_passes": 23.0,
                "accurate_opp_half_passes": 17.0,
                "crosses_total": 1.7,
                "crosses_accurate": 0.8,
                "touches": 72.0,
                "possession_lost": 9.5,
                "dispossessed": 0.9,
                "duels_lost": 4.7,
                "aerial_won": 1.5,
                "aerial_lost": 1.1,
                "interceptions": 1.3,
                "tackles_won": 1.7,
                "tackles": 2.2,
                "clearances": 0.9,
                "total_contest": 4.6,
                "won_contest": 2.6,
                "challenges_lost": 1.3,
                "fouls": 1.8,
                "fouls_drawn": 1.3,
                "goals": 0.08,
                "goal_rate": 0.08,
                "shots_on_target": 0.7,
                "shots_off_target": 0.6,
                "blocks": 0.4,
                "big_chances_created": 0.13,
                "big_chances_missed": 0.07,
                "xgot": 0.074,
                "ball_carries": 34.0,
                "total_progression": 91.0,
                "progressive_carries": 8.0
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 22.8 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0.5315,
                "assists": 0.038,
                "assist_rate": 0.038,
                "expected_assists": 0.0433,
                "expected_goals": 0.0278,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goals": 0.0202,
                "goal_rate": 0.0202,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0187,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78
              },
              "params": {
                "expected_minutes": 22.78,
                "projection_minutes": 90.0,
                "minutes_scale": 0.2531,
                "appearance_probability": 0.535
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5315,
                "assists": 0.038,
                "assist_rate": 0.038,
                "expected_assists": 0.0433,
                "expected_goals": 0.0278,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goals": 0.0202,
                "goal_rate": 0.0202,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0187,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.5315,
                "assist_rate": 0.038,
                "assists": 0,
                "expected_assists": 0.0433,
                "expected_goals": 0.0278,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goal_rate": 0.0202,
                "goals": 0,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0187,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.82 (squad xG sum 0.7338, xG scale 1.1175, xA scale 1.3349, team xA 0.53 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5315,
                "assist_rate": 0.038,
                "assists": 0,
                "expected_assists": 0.0309,
                "expected_goals": 0.0166,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goal_rate": 0.0202,
                "goals": 0,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0112,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9023,
                "creation_factor": 0.9432
              },
              "params": {
                "team_lambda": 0.82,
                "squad_xg_sum": 0.7338,
                "squad_xa_sum": 0.3993,
                "team_expected_assists": 0.533,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1175,
                "xa_scale": 1.3349,
                "opponent_lambda": 1.976,
                "scoreline_reset": true,
                "appearance_weight": 0.535
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0278,
                  "after": 0.0166
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0433,
                  "after": 0.0309
                }
              ]
            },
            {
              "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": {
                "key_pass": 0.5315,
                "assist_rate": 0.038,
                "assists": 0,
                "expected_assists": 0.0309,
                "expected_goals": 0.0166,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goal_rate": 0.0202,
                "goals": 0,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0112,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9023,
                "creation_factor": 0.9432,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4143,
                "fifa_rank": 3554.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.5315,
                "assist_rate": 0.038,
                "assists": 0,
                "expected_assists": 0.0309,
                "expected_goals": 0.0166,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goal_rate": 0.0202,
                "goals": 0,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0112,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0163,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9023,
                "creation_factor": 0.9432,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0163,
                "goal_rate": 0.0202,
                "scorer_weight": 0.015,
                "squad_weight_total": 0.8559,
                "weight_share": 0.0175,
                "finishing_factor": 0.9023,
                "appearance_weight": 0.535,
                "weight_rank": 12,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.5315,
                "assist_rate": 0.038,
                "assists": 0,
                "expected_assists": 0.0309,
                "expected_goals": 0.0166,
                "total_shots": 0.4302,
                "total_pass": 14.6788,
                "accurate_pass": 11.8949,
                "ball_recovery": 1.5185,
                "duels_won": 1.7716,
                "rating": 7.2,
                "minutes": 22.78,
                "total_long_balls": 1.2654,
                "accurate_long_balls": 0.7592,
                "total_own_half_passes": 6.074,
                "accurate_own_half_passes": 4.8086,
                "total_opp_half_passes": 5.8209,
                "accurate_opp_half_passes": 4.3024,
                "crosses_total": 0.4302,
                "crosses_accurate": 0.2025,
                "touches": 18.222,
                "possession_lost": 2.4043,
                "dispossessed": 0.9,
                "duels_lost": 1.1895,
                "aerial_won": 0.3796,
                "aerial_lost": 1.1,
                "interceptions": 0.329,
                "tackles_won": 0.4302,
                "tackles": 0.5568,
                "clearances": 0.2278,
                "total_contest": 1.1642,
                "won_contest": 0.658,
                "challenges_lost": 1.3,
                "fouls": 0.4555,
                "fouls_drawn": 0.329,
                "goal_rate": 0.0202,
                "goals": 0,
                "shots_on_target": 0.1772,
                "shots_off_target": 0.1518,
                "blocks": 0.1012,
                "big_chances_created": 0.0329,
                "big_chances_missed": 0.0177,
                "xgot": 0.0112,
                "ball_carries": 8.6048,
                "total_progression": 23.0306,
                "progressive_carries": 2.0247,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.854,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0163,
                "projected_assists": 0,
                "assist_probability": 0.03,
                "finishing_factor": 0.9023,
                "creation_factor": 0.9432,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.03,
                "assist_rate": 0.038,
                "provider_weight": 0.0291,
                "squad_weight_total": 0.6106,
                "weight_share": 0.0477,
                "creation_factor": 0.9432,
                "appearance_weight": 0.535,
                "weight_rank": 8,
                "eligible_players": 14
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 0,
        "expected_goals": 0.82,
        "expected_assists": 0.53,
        "total_shots": 8,
        "shots_on_target": 1,
        "total_passes": 317,
        "interceptions": 7,
        "tackles": 22,
        "avg_rating": 6.74,
        "possession_estimated_pct": 46.7,
        "pressing_actions_per_90": 6.7
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Declan Rice",
        "attacker_role": "LW",
        "attacker_market_value": 114000000,
        "attacker_height": 188,
        "attacker_skill_quality": 0.897,
        "defenders": [
          "John Egan"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "LW vs CB",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.639,
        "xg_contribution": 0.0834,
        "xg_multiplier": 1.3214,
        "shots_in_zone": 2.3,
        "dribbles_attempted": 4,
        "dribbles_successful": 2.2,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 2.7,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "John Egan",
            "role": "CB",
            "market_value": 1500000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.4,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.361
          }
        ],
        "duel_analysis": "Declan Rice (LW) has a clear attacking advantage against John Egan in a direct 1v1 contest. Duel win probability: 64%. The quality gap is significant (€114M vs €2M avg). Matchup xG multiplier ×1.32 (×1.00 = his usual level). Projected xG contribution: 0.083 — and projects to generate high-quality chances."
      },
      {
        "attacker": "Eberechi Eze",
        "attacker_role": "CAM",
        "attacker_market_value": 63000000,
        "attacker_height": 178,
        "attacker_skill_quality": 0.859,
        "defenders": [
          "Matt Crooks"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "CAM vs CM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.552,
        "xg_contribution": 0.1364,
        "xg_multiplier": 1.1946,
        "shots_in_zone": 2.6,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.5,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Matt Crooks",
            "role": "CM",
            "market_value": 1000000,
            "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": 1.0,
            "defensive_success_rate": 0.448
          }
        ],
        "duel_analysis": "Eberechi Eze (CAM) is slightly favored against Matt Crooks in a direct 1v1 contest. Duel win probability: 55%. The quality gap is significant (€63M vs €1M avg). Matchup xG multiplier ×1.19 (×1.00 = his usual level). Projected xG contribution: 0.136 — creating consistent moderate threat."
      },
      {
        "attacker": "Martin Ødegaard",
        "attacker_role": "RW",
        "attacker_market_value": 88000000,
        "attacker_height": 178,
        "attacker_skill_quality": 0.888,
        "defenders": [
          "John Egan"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "RW vs CB",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.595,
        "xg_contribution": 0.2619,
        "xg_multiplier": 1.2568,
        "shots_in_zone": 2.2,
        "dribbles_attempted": 4,
        "dribbles_successful": 2.1,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 2.7,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "John Egan",
            "role": "CB",
            "market_value": 1500000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.4,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.405
          }
        ],
        "duel_analysis": "Martin Ødegaard (RW) has a clear attacking advantage against John Egan in a direct 1v1 contest. Duel win probability: 59%. The quality gap is significant (€88M vs €2M avg). Matchup xG multiplier ×1.26 (×1.00 = his usual level). Projected xG contribution: 0.262 — and projects to generate high-quality chances."
      },
      {
        "attacker": "Bukayo Saka",
        "attacker_role": "ST",
        "attacker_market_value": 115000000,
        "attacker_height": 178,
        "attacker_skill_quality": 0.897,
        "defenders": [
          "John Egan",
          "Semi Ajayi"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.363,
        "xg_contribution": 0.3839,
        "xg_multiplier": 1.2392,
        "shots_in_zone": 2.8,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.6,
        "aerial_duels": 3,
        "aerial_won": 1.5,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "John Egan",
            "role": "CB",
            "market_value": 1500000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.8,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.637
          },
          {
            "player": "Semi Ajayi",
            "role": "CB",
            "market_value": 930000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.8,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.637
          }
        ],
        "duel_analysis": "Bukayo Saka (ST) has a clear attacking advantage against John Egan and Semi Ajayi in a 2-defender block. Duel win probability: 36%. The quality gap is significant (€115M vs €1M avg). Matchup xG multiplier ×1.24 (×1.00 = his usual level). Projected xG contribution: 0.384 — and projects to generate high-quality chances."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Oliver McBurnie",
        "attacker_role": "ST",
        "attacker_market_value": 7600000,
        "attacker_height": 188,
        "attacker_skill_quality": 0.494,
        "defenders": [
          "William Saliba",
          "Gabriel Magalhães"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.881,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.2232,
        "xg_multiplier": 0.7145,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "William Saliba",
            "role": "CB",
            "market_value": 94000000,
            "tackles_attempted": 1.2,
            "tackles_won": 1.1,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 1.2,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Gabriel Magalhães",
            "role": "CB",
            "market_value": 70000000,
            "tackles_attempted": 1.2,
            "tackles_won": 1.1,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 1.2,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Oliver McBurnie (ST) is heavily outmatched defensively against William Saliba and Gabriel Magalhães in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€8M vs €82M avg). Matchup xG multiplier ×0.71 (×1.00 = his usual level). Projected xG contribution: 0.223 — with very limited chance creation expected."
      },
      {
        "attacker": "Regan Slater",
        "attacker_role": "LM",
        "attacker_market_value": 9200000,
        "attacker_height": 173,
        "attacker_skill_quality": 0.513,
        "defenders": [
          "Myles Lewis-Skelly"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.869,
        "duel_zone": "Left Mid vs Right Back — Wide Channel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.275,
        "xg_contribution": 0.0521,
        "xg_multiplier": 0.7273,
        "shots_in_zone": 1.2,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Myles Lewis-Skelly",
            "role": "RB",
            "market_value": 69000000,
            "tackles_attempted": 2.3,
            "tackles_won": 2.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.725
          }
        ],
        "duel_analysis": "Regan Slater (LM) is heavily outmatched defensively against Myles Lewis-Skelly in a direct 1v1 contest. Duel win probability: 27%. The quality gap is significant (€9M vs €69M avg). Matchup xG multiplier ×0.73 (×1.00 = his usual level). Projected xG contribution: 0.052 — with very limited chance creation expected."
      },
      {
        "attacker": "Elliot Stroud",
        "attacker_role": "RM",
        "attacker_market_value": 8400000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.503,
        "defenders": [
          "Ben White"
        ],
        "defender_roles": [
          "LB"
        ],
        "def_skill_quality_avg": 0.732,
        "duel_zone": "Right Mid vs Left Back — Wide Channel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.324,
        "xg_contribution": 0.042,
        "xg_multiplier": 0.8002,
        "shots_in_zone": 1.3,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.9,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Ben White",
            "role": "LB",
            "market_value": 32000000,
            "tackles_attempted": 2.2,
            "tackles_won": 1.9,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.676
          }
        ],
        "duel_analysis": "Elliot Stroud (RM) faces tough defensive resistance against Ben White in a direct 1v1 contest. Duel win probability: 32%. The quality gap is significant (€8M vs €32M avg). Matchup xG multiplier ×0.80 (×1.00 = his usual level). Projected xG contribution: 0.042 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Lewie Coyle",
        "attacker_role": "LWB",
        "attacker_market_value": 2700000,
        "attacker_height": 173,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Martin Ødegaard",
          "Myles Lewis-Skelly"
        ],
        "defender_roles": [
          "RW",
          "RB"
        ],
        "def_skill_quality_avg": 0.879,
        "duel_zone": "LWB vs RW + RB",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.021,
        "xg_multiplier": 0.678,
        "shots_in_zone": 0.7,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Martin Ødegaard",
            "role": "RW",
            "market_value": 88000000,
            "tackles_attempted": 1.2,
            "tackles_won": 1.1,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Myles Lewis-Skelly",
            "role": "RB",
            "market_value": 69000000,
            "tackles_attempted": 1.2,
            "tackles_won": 1.1,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Lewie Coyle (LWB) is heavily outmatched defensively against Martin Ødegaard and Myles Lewis-Skelly in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€3M vs €78M avg). Matchup xG multiplier ×0.68 (×1.00 = his usual level). Projected xG contribution: 0.021 — with very limited chance creation expected."
      },
      {
        "attacker": "Ryan Giles",
        "attacker_role": "RWB",
        "attacker_market_value": 14500000,
        "attacker_height": 179,
        "attacker_skill_quality": 0.574,
        "defenders": [
          "Declan Rice",
          "Ben White"
        ],
        "defender_roles": [
          "LW",
          "LB"
        ],
        "def_skill_quality_avg": 0.814,
        "duel_zone": "RWB vs LW + LB",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.0011,
        "xg_multiplier": 0.8113,
        "shots_in_zone": 0.7,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 2.5,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Declan Rice",
            "role": "LW",
            "market_value": 114000000,
            "tackles_attempted": 1.2,
            "tackles_won": 1.1,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Ben White",
            "role": "LB",
            "market_value": 32000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Ryan Giles (RWB) faces tough defensive resistance against Declan Rice and Ben White in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€14M vs €73M avg). Matchup xG multiplier ×0.81 (×1.00 = his usual level). Projected xG contribution: 0.001 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Matt Crooks",
        "attacker_role": "CM",
        "attacker_market_value": 1000000,
        "attacker_height": 193,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Bruno Guimarães"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.879,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.291,
        "xg_contribution": 0.0315,
        "xg_multiplier": 0.7657,
        "shots_in_zone": 1.3,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.5,
        "aerial_duels": 2,
        "aerial_won": 1.4,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Bruno Guimarães",
            "role": "CDM",
            "market_value": 77000000,
            "tackles_attempted": 2.3,
            "tackles_won": 2.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.709
          }
        ],
        "duel_analysis": "Matt Crooks (CM) is heavily outmatched defensively against Bruno Guimarães in a direct 1v1 contest. Duel win probability: 29%. The quality gap is significant (€1M vs €77M avg). Matchup xG multiplier ×0.77 (×1.00 = his usual level). Projected xG contribution: 0.031 — with very limited chance creation expected."
      },
      {
        "attacker": "Tim Iroegbunam",
        "attacker_role": "CM",
        "attacker_market_value": 15500000,
        "attacker_height": 182,
        "attacker_skill_quality": 0.585,
        "defenders": [
          "Bruno Guimarães"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.879,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.321,
        "xg_contribution": 0.0747,
        "xg_multiplier": 0.8105,
        "shots_in_zone": 1.4,
        "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": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Bruno Guimarães",
            "role": "CDM",
            "market_value": 77000000,
            "tackles_attempted": 2.3,
            "tackles_won": 2.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.679
          }
        ],
        "duel_analysis": "Tim Iroegbunam (CM) faces tough defensive resistance against Bruno Guimarães in a direct 1v1 contest. Duel win probability: 32%. The quality gap is significant (€16M vs €77M avg). Matchup xG multiplier ×0.81 (×1.00 = his usual level). Projected xG contribution: 0.075 — and is restricted in space and time on the ball."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.892,
      "away_midfield_power": 0.535,
      "home_creative_power": 0.823,
      "away_creative_power": 0.412,
      "home_defensive_power": 0.687,
      "away_defensive_power": 0.477,
      "home_dominance_ratio": 0.625,
      "home_midfield_count": 5,
      "away_midfield_count": 4,
      "home_midfield_players": [
        "Declan Rice",
        "Martin Ødegaard",
        "Eberechi Eze",
        "Bruno Guimarães",
        "Mikel Merino"
      ],
      "away_midfield_players": [
        "Regan Slater",
        "Elliot Stroud",
        "Matt Crooks",
        "Tim Iroegbunam"
      ],
      "possession_advantage": "home",
      "estimated_possession_home_pct": 53.3,
      "estimated_possession_away_pct": 46.7,
      "home_pressing_actions_per_90": 8.3,
      "away_pressing_actions_per_90": 6.7,
      "home_key_passes_projected": 6.4,
      "away_key_passes_projected": 4.0,
      "home_throughball_threat": 3.1,
      "away_throughball_threat": 1.8,
      "key_personal_duel": "Declan Rice vs Tim Iroegbunam",
      "midfield_lambda_factor_home": 1.046,
      "midfield_lambda_factor_away": 0.955
    },
    "formation_analysis": {
      "home_formation": "4-2-3-1",
      "away_formation": "5-4-1",
      "home_tactical_bonus": -0.01,
      "away_tactical_bonus": 0.01,
      "formation_verdict": "Tactical parity between 4-2-3-1 and 5-4-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.976,
    "away_lambda": 0.82,
    "home_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "RW vs CB"
    ],
    "away_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Central Mid vs Defensive Mid — Pressing/Creation Duel"
    ],
    "home_player_antagonists": {
      "Declan Rice": {
        "opponents": [
          "John Egan",
          "Ryan Giles",
          "Elliot Stroud"
        ],
        "primary_zone": "LW vs CB",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Eberechi Eze": {
        "opponents": [
          "Matt Crooks"
        ],
        "primary_zone": "CAM vs CM",
        "source": "attacking_duel, midfield_pairing"
      },
      "Martin Ødegaard": {
        "opponents": [
          "John Egan",
          "Lewie Coyle",
          "Matt Crooks"
        ],
        "primary_zone": "RW vs CB",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Bukayo Saka": {
        "opponents": [
          "John Egan",
          "Semi Ajayi"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "William Saliba": {
        "opponents": [
          "Oliver McBurnie"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Gabriel Magalhães": {
        "opponents": [
          "Oliver McBurnie"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Myles Lewis-Skelly": {
        "opponents": [
          "Regan Slater",
          "Lewie Coyle"
        ],
        "primary_zone": "Left Mid vs Right Back — Wide Channel",
        "source": "defensive_duel"
      },
      "Ben White": {
        "opponents": [
          "Elliot Stroud",
          "Ryan Giles"
        ],
        "primary_zone": "Right Mid vs Left Back — Wide Channel",
        "source": "defensive_duel"
      },
      "Bruno Guimarães": {
        "opponents": [
          "Matt Crooks",
          "Tim Iroegbunam"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "defensive_duel, midfield_pairing"
      },
      "Mikel Merino": {
        "opponents": [
          "Regan Slater"
        ],
        "primary_zone": "Midfield lane",
        "source": "midfield_pairing"
      },
      "David Raya": {
        "opponents": [
          "Oliver McBurnie",
          "Tim Iroegbunam"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "John Egan": {
        "opponents": [
          "Declan Rice",
          "Martin Ødegaard",
          "Bukayo Saka"
        ],
        "primary_zone": "LW vs CB",
        "source": "defensive_duel"
      },
      "Matt Crooks": {
        "opponents": [
          "Eberechi Eze",
          "Bruno Guimarães",
          "Martin Ødegaard"
        ],
        "primary_zone": "CAM vs CM",
        "source": "defensive_duel, attacking_duel, midfield_pairing"
      },
      "Semi Ajayi": {
        "opponents": [
          "Bukayo Saka"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Oliver McBurnie": {
        "opponents": [
          "William Saliba",
          "Gabriel Magalhães"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Regan Slater": {
        "opponents": [
          "Myles Lewis-Skelly",
          "Mikel Merino"
        ],
        "primary_zone": "Left Mid vs Right Back — Wide Channel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Elliot Stroud": {
        "opponents": [
          "Ben White",
          "Declan Rice"
        ],
        "primary_zone": "Right Mid vs Left Back — Wide Channel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Lewie Coyle": {
        "opponents": [
          "Martin Ødegaard",
          "Myles Lewis-Skelly"
        ],
        "primary_zone": "LWB vs RW + RB",
        "source": "attacking_duel"
      },
      "Ryan Giles": {
        "opponents": [
          "Declan Rice",
          "Ben White"
        ],
        "primary_zone": "RWB vs LW + LB",
        "source": "attacking_duel"
      },
      "Tim Iroegbunam": {
        "opponents": [
          "Bruno Guimarães"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Konstantinos Tzolakis": {
        "opponents": [
          "Bukayo Saka",
          "Eberechi Eze"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Nobel Mendy": {
        "opponents": [
          "Bukayo Saka"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Home midfield dominates with ~53% possession expected (Declan Rice vs Tim Iroegbunam). Total antagonist xG — Home: 0.87, Away: 0.45. 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.2992,
      "ha_source": "estimated:league",
      "home_gk_opposition_factor": 0.9273,
      "away_gk_opposition_factor": 0.8871,
      "home_set_piece_bonus": 0.18,
      "away_set_piece_bonus": 0.113,
      "home_defensive_solidity_vs": 0.9774,
      "away_defensive_solidity_vs": 0.8664,
      "home_midfield_factor": 1.046,
      "away_midfield_factor": 0.955,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.8468,
      "away_avg_quality": 0.5059,
      "avg_quality_gap": 0.3409,
      "squad_value_gap_log": 2.1053,
      "top5_value_gap_log": 1.8462,
      "attack_value_gap_log": 2.2551,
      "elite_count_gap": 8,
      "combined_quality_gap": 0.6962,
      "stronger_lambda_boost": 0.3829,
      "weaker_lambda_suppression": 0.2228,
      "home_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.45
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.8656,
          "n_duels": 4,
          "duel_confidence": 0.67,
          "result": 1.0585
        },
        {
          "label": "midfield_factor",
          "factor": 1.046,
          "result": 1.1071
        },
        {
          "label": "formation_bonus",
          "factor": 0.99,
          "result": 1.0961
        },
        {
          "label": "home_advantage",
          "factor": 1.2992,
          "result": 1.424
        },
        {
          "label": "standing_factor",
          "factor": 0.9848,
          "result": 1.4024
        },
        {
          "label": "gk_opposition",
          "factor": 0.9273,
          "result": 1.3004
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9774,
          "result": 1.271
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.18,
          "result": 1.451
        },
        {
          "label": "engine_clamp",
          "pre": 1.451,
          "result": 1.451,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": 0.6962,
          "factor": 1.3829,
          "pre": 1.451,
          "result": 2.0066
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 2.0066
        },
        {
          "label": "bench_bonus",
          "side": "home",
          "bonus": 0.189,
          "result": 2.196
        },
        {
          "label": "fbref_blend",
          "side": "home",
          "applied": true,
          "blending_weight": 0.192,
          "empirical_lambda": 2.069,
          "result": 2.1716
        },
        {
          "label": "router_clamp",
          "pre": 2.1716,
          "result": 2.172,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 1.05,
          "pre": 2.172,
          "result": 2.2806,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": true,
          "factor": 1.1791,
          "pre": 2.2806,
          "result": 2.689
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "reason": "lambda gap >= 1.25 (clear mismatch)",
          "result": 2.689
        },
        {
          "label": "redistribution",
          "applied": true,
          "factor": 0.9043,
          "input_total": 3.29,
          "result": 2.4318
        },
        {
          "label": "final_clamp",
          "applied": true,
          "pre": 2.4318,
          "result": 2.432,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "competition_calibration",
          "applied": true,
          "reason": "competition_intensity_calibration",
          "samples": 105,
          "scale": 0.85,
          "observed_total_goals": 2.781,
          "result": 1.976
        }
      ],
      "away_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.45
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.4456,
          "n_duels": 7,
          "duel_confidence": 0.75,
          "result": 0.6967
        },
        {
          "label": "midfield_factor",
          "factor": 0.955,
          "result": 0.6653
        },
        {
          "label": "formation_bonus",
          "factor": 1.01,
          "result": 0.672
        },
        {
          "label": "home_advantage",
          "factor": 1.0,
          "result": 0.672
        },
        {
          "label": "standing_factor",
          "factor": 0.8673,
          "result": 0.5828
        },
        {
          "label": "gk_opposition",
          "factor": 0.8871,
          "result": 0.517
        },
        {
          "label": "defensive_solidity",
          "factor": 0.8664,
          "result": 0.4479
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.113,
          "result": 0.5609
        },
        {
          "label": "engine_clamp",
          "pre": 0.5609,
          "result": 0.6,
          "band": [
            0.6,
            4.0
          ],
          "clamped": true
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": 0.6962,
          "factor": 0.7772,
          "pre": 0.6,
          "result": 0.65
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 0.65
        },
        {
          "label": "bench_bonus",
          "side": "away",
          "bonus": 0.1722,
          "result": 0.8222
        },
        {
          "label": "fbref_blend",
          "side": "away",
          "applied": true,
          "blending_weight": 0.192,
          "empirical_lambda": 2.069,
          "result": 1.0616
        },
        {
          "label": "router_clamp",
          "pre": 1.0616,
          "result": 1.062,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 0.95,
          "pre": 1.062,
          "result": 1.0089,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": true,
          "factor": 0.9404,
          "pre": 1.0089,
          "result": 0.949
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "reason": "lambda gap >= 1.25 (clear mismatch)",
          "result": 0.949
        },
        {
          "label": "redistribution",
          "applied": true,
          "factor": 0.9043,
          "input_total": 3.29,
          "result": 0.8582
        },
        {
          "label": "final_clamp",
          "applied": true,
          "pre": 0.8582,
          "result": 0.858,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "competition_calibration",
          "applied": true,
          "reason": "competition_intensity_calibration",
          "samples": 105,
          "scale": 0.85,
          "observed_total_goals": 2.781,
          "result": 0.82
        }
      ],
      "home_bench_lambda_bonus": 0.189,
      "away_bench_lambda_bonus": 0.1722,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "fbref_team_priors": {
        "applied": true,
        "home_squad": "Arsenal",
        "away_squad": "Hull City",
        "home_goals_per90": 2.0,
        "away_goals_against_per90": 1.5,
        "away_goals_per90": 1.5,
        "home_goals_against_per90": 2.0,
        "home_empirical_lambda": 2.069,
        "away_empirical_lambda": 2.069,
        "blending_weight": 0.192
      },
      "mismatch_score_pressure_applied": true,
      "mismatch_score_pressure_gap": 0.6962,
      "mismatch_favorite_lambda_boost": 1.1791,
      "mismatch_underdog_lambda_factor": 0.9404,
      "pre_mismatch_home_lambda": 2.2806,
      "pre_mismatch_away_lambda": 1.0089,
      "competitive_underdog_floor_applied": false,
      "pre_calibration_home_lambda": 2.1716,
      "pre_calibration_away_lambda": 1.0616,
      "competition_calibration_applied": true,
      "competition_calibration_reason": "competition_intensity_calibration",
      "competition_calibration_samples": 105,
      "competition_observed_total_goals": 2.781,
      "competition_calibration_scale": 0.85,
      "neutral_share_preserved": false,
      "final_home_lambda": 1.976,
      "final_away_lambda": 0.82
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 2,
    "opponent_position": 10,
    "standing_lambda_multiplier": 0.9848,
    "attack_index": 1.075,
    "defense_concede_index": 0.877,
    "form_multiplier": 1.04,
    "team_attack_rate_contextual": 1.47,
    "opp_defense_rate_contextual": 1.2,
    "team_ppg": 2.08,
    "opponent_ppg": 1.28
  },
  "away_standing": {
    "available": true,
    "team_position": 10,
    "opponent_position": 2,
    "standing_lambda_multiplier": 0.8673,
    "attack_index": 0.911,
    "defense_concede_index": 0.783,
    "form_multiplier": 0.96,
    "team_attack_rate_contextual": 1.25,
    "opp_defense_rate_contextual": 1.07,
    "team_ppg": 1.28,
    "opponent_ppg": 2.08
  },
  "xgboost_reasoning": {
    "summary": "Antagonist + XGBoost match analysis for Arsenal vs Hull. 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 5-4-1 (duel lambdas: Home 2.172, Away 1.062). Final calibrated Poisson lambdas: Home 1.976, Away 0.820 (most likely score 1-0).",
    "competition": "Premier League",
    "model_coverage": {
      "home_starters_count": 11,
      "home_xgboost_players": 11,
      "home_fbref_players": 10,
      "away_starters_count": 11,
      "away_xgboost_players": 11,
      "away_fbref_players": 9,
      "home_bench_modelled": 7,
      "away_bench_modelled": 7
    },
    "team_priors": {
      "applied": true,
      "home_squad": "Arsenal",
      "away_squad": "Hull City",
      "home_goals_per90": 2.0,
      "away_goals_against_per90": 1.5,
      "away_goals_per90": 1.5,
      "home_goals_against_per90": 2.0,
      "home_empirical_lambda": 2.069,
      "away_empirical_lambda": 2.069,
      "blending_weight": 0.192
    },
    "pipeline_stages": [
      "1. XGBoost player regressions for volume & event rates with market-value quality scaling",
      "2. Multi-source prior blending (FBref 2026-2027 tables + Sofascore season history)",
      "3. Antagonist formation duel matrix resolving 1v1 and zonal matchups",
      "4. Team-level prior calibration (FBref possession and attack/defense efficiencies)",
      "5. Bivariate Poisson matrix with Dixon-Coles low-score correction"
    ],
    "final_lambdas": {
      "home_lambda": 1.976,
      "away_lambda": 0.82,
      "micro_duel_home_lambda": 2.172,
      "micro_duel_away_lambda": 1.062
    },
    "calibration_and_pressure": {
      "competition_calibration_applied": true,
      "competition_calibration_scale": 0.85,
      "mismatch_pressure_applied": true,
      "underdog_floor_applied": false
    }
  },
  "timestamp": "2026-11-03T14:32:29Z",
  "outcome_baseline": null,
  "stat_limits": {
    "saves": 15.0,
    "goalsPrevented": 5.0,
    "keeperSaveValue": 3.0,
    "interceptionWon": 10.0,
    "totalTackle": 12.0,
    "wonTackle": 10.0,
    "totalClearance": 18.0,
    "aerialWon": 15.0,
    "aerialLost": 12.0,
    "totalPass": 150.0,
    "accuratePass": 145.0,
    "keyPass": 8.0,
    "expectedAssists": 1.5,
    "goalAssist": 4.0,
    "expectedGoals": 3.0,
    "expectedGoalsOnTarget": 6.0,
    "xgot": 6.0,
    "goals": 5.0,
    "totalShots": 12.0,
    "onTargetScoringAttempt": 8.0,
    "shotOffTarget": 8.0,
    "rating": 10.0,
    "minutesPlayed": 130.0,
    "duelWon": 20.0,
    "duelLost": 20.0,
    "ballRecovery": 18.0,
    "fouls": 12.0
  }
}