{
  "match_info": {
    "home_team": "Villarreal",
    "away_team": "Espanyol",
    "tournament": "LaLiga",
    "date": "20261030",
    "timezone": "America/New_York",
    "home_formation": "4-4-2",
    "away_formation": "4-2-3-1",
    "lineup_status": "unconfirmed_official",
    "lineup_source": "/matches/get-lineups",
    "lineup_confirmed": false,
    "lineup_confidence": 0.75
  },
  "prediction": {
    "most_likely_score": "2-1",
    "home_goals": 2,
    "away_goals": 1,
    "most_likely_score_probability": 0.0974,
    "most_likely_winning_score_home": "2-1",
    "most_likely_winning_score_home_probability": 0.0974,
    "most_likely_winning_score_away": "1-2",
    "most_likely_winning_score_away_probability": 0.0628,
    "match_resolution": "regulation",
    "predicted_winner": "Villarreal",
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.2289,
      "shootout_home_win_probability": null,
      "shootout_away_win_probability": null,
      "penalty_home_goals": null,
      "penalty_away_goals": null,
      "penalty_score": null,
      "penalty_winner": null,
      "penalty_winner_goals": null,
      "penalty_loser_goals": null,
      "penalty_result": null,
      "home_advance_probability": null,
      "away_advance_probability": null,
      "projected_winner": null,
      "projected_winner_probability": null,
      "final_score_after_penalties": null,
      "deciding_stage": null,
      "deciding_scoreline": null,
      "deciding_scoreline_probability": null,
      "deciding_route_probability": null,
      "reason": "Tie-breaker not required for this match context."
    },
    "top_5_scorelines": [
      {
        "score": "1-1",
        "probability": 0.1061
      },
      {
        "score": "2-1",
        "probability": 0.0974
      },
      {
        "score": "1-0",
        "probability": 0.0878
      },
      {
        "score": "2-0",
        "probability": 0.0818
      },
      {
        "score": "1-2",
        "probability": 0.0628
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.0485,
      "0-1": 0.0564,
      "0-2": 0.034,
      "0-3": 0.0135,
      "0-4": 0.004,
      "0-5": 0.001,
      "1-0": 0.0878,
      "1-1": 0.1061,
      "1-2": 0.0628,
      "1-3": 0.0249,
      "1-4": 0.0074,
      "1-5": 0.0018,
      "2-0": 0.0818,
      "2-1": 0.0974,
      "2-2": 0.058,
      "2-3": 0.023,
      "2-4": 0.0069,
      "2-5": 0.0016,
      "3-0": 0.0504,
      "3-1": 0.06,
      "3-2": 0.0357,
      "3-3": 0.0142,
      "3-4": 0.0042,
      "3-5": 0.001,
      "4-0": 0.0233,
      "4-1": 0.0277,
      "4-2": 0.0165,
      "4-3": 0.0066,
      "4-4": 0.002,
      "5-0": 0.0086,
      "5-1": 0.0102,
      "5-2": 0.0061,
      "5-3": 0.0024,
      "5-4": 0.0007,
      "6-0": 0.0026,
      "6-1": 0.0032,
      "6-2": 0.0019,
      "6-3": 0.0007,
      "7-0": 0.0007,
      "7-1": 0.0008
    },
    "outcome": {
      "home_win": 0.5268,
      "draw": 0.2289,
      "away_win": 0.2443
    },
    "markets": {
      "over_2_5_goals": 0.5855,
      "under_2_5_goals": 0.4145,
      "btts_yes": 0.5871,
      "btts_no": 0.4129,
      "home_clean_sheet": 0.3039,
      "away_clean_sheet": 0.1576
    },
    "home_ratings": {
      "DR": 6.97,
      "MCR": 6.9,
      "ATR": 7.11,
      "GK": 7.01
    },
    "away_ratings": {
      "DR": 6.78,
      "MCR": 6.82,
      "ATR": 6.89,
      "GK": 7.17
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Villarreal vs Espanyol. Most likely scoreline: 2-1. Lambdas derived from 6 home and 6 away individual player duels. Head-to-head: Villarreal 8W-1D-1L vs Espanyol over 10 meetings.",
      "key_player": "Projected scorer(s): Georges Mikautadze, Alberto Moleiro, Roberto Fernández",
      "tactical_analysis": "Tactical parity between 4-4-2 and 4-2-3-1. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Carlos Maciá vs Gabriel Moscardo will be the pivotal duel. Total antagonist xG — Home: 1.25, Away: 0.82. 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.74,
    "home_lambda": 1.848,
    "away_lambda": 1.191,
    "h2h": {
      "available": true,
      "meetings": 10,
      "home_wins": 8,
      "away_wins": 1,
      "draws": 1,
      "home_multiplier": 1.05,
      "away_multiplier": 0.95
    },
    "modal_scoreline": "1-1",
    "modal_scoreline_probability": 0.1061,
    "headline_policy": null
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.5268,
      "draw": 0.2289,
      "away_win": 0.2443
    },
    "favorite": "Villarreal",
    "favorite_win_probability": 0.5268,
    "fair_spread": 0.657,
    "fair_total": 3.039,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Villarreal",
        "estimate": 1.848,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Espanyol",
        "estimate": 1.191,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.5855,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.5871,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Villarreal",
        "estimate": 1.0,
        "probability": 0.3039,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Espanyol",
        "estimate": 1.0,
        "probability": 0.1576,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Georges Mikautadze (Villarreal)",
        "estimate": 0.5317,
        "probability": 0.4124,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Roberto Fernández (Espanyol)",
        "estimate": 0.4135,
        "probability": 0.3387,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Alberto Moleiro (Villarreal)",
        "estimate": 0.24,
        "probability": 0.2134,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Edu Expósito (Espanyol)",
        "estimate": 0.1652,
        "probability": 0.1523,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "high",
      "expected_total_goals": 3.039,
      "expected_total_shots": 29,
      "expected_total_passes": 799,
      "expected_pressing_actions_per_90": 13.2,
      "possession_home_pct": 50.3,
      "possession_away_pct": 49.7,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Villarreal",
      "favorite_win_probability": 0.5268,
      "script": "Villarreal is the fair winner side, but the baseline remains narrow: fair spread +0.66 goals and fair total 3.04.",
      "first_half": "Expect high tempo while both sides test the matchup thesis; shot baseline is about 14 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; Espanyol must keep the match inside one goal.",
      "late_game": "A Villarreal lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Villarreal chance creation leans on Georges Mikautadze against Leandro Cabrera, Vanja Drkušić in Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "Villarreal: starters carry the main goal usage through Georges Mikautadze, Alberto Moleiro; bench watchlist: Ilias Akhomach, Manor Solomon.",
      "Espanyol: starters carry the main goal usage through Roberto Fernández; bench watchlist: Tyrhys Dolan, Javi Puado, Cyril Ngonge.",
      "Assist usage should flow through Alberto Moleiro, Javier Hernández; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Villarreal tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects high tempo, about 14 total first-half shots, and 1.52 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 Espanyol 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 Villarreal.",
      "Espanyol 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": {
    "Villarreal": {
      "formation": "4-4-2",
      "players": {
        "Georges Mikautadze": {
          "player_id": 1009372,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 176,
          "market_value": 43000000,
          "stats": {
            "expected_goals": 0.5317,
            "goal_rate": 0.4323,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 3,
            "expected_assists": 0.1172,
            "key_pass": 1,
            "rating": 7.0084,
            "minutes": 84,
            "total_pass": 22,
            "accurate_pass": 18,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 13,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 38,
            "possession_lost": 11.8923,
            "dispossessed": 1.1827,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 4,
            "won_contest": 2,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.2227,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.859,
            "offsides": 0,
            "ball_carries": 12,
            "total_progression": 47,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.1488,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.5,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.301,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
            "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.4124,
            "projected_assists": 0,
            "assist_probability": 0.1106,
            "finishing_factor": 1.0218,
            "creation_factor": 1.25,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 24,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2844,
                "expected_assists": 0.0058,
                "total_shots": 1,
                "shots_on_target": 1,
                "shots_off_target": 0,
                "total_pass": 9,
                "accurate_pass": 7,
                "key_pass": 1,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 2,
                "ball_recovery": 1,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0181,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "interceptions": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 23,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1889,
                "expected_assists": 0.0446,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 23,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6685,
                "expected_assists": 0.0025,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 7,
                "accurate_pass": 7,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 27,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4251,
                "expected_assists": 0.5678,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 9,
                "key_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5212,
                "expected_assists": 0.0343,
                "total_shots": 4,
                "shots_on_target": 4,
                "total_pass": 34,
                "accurate_pass": 27,
                "key_pass": 2,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 28,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1751,
                "expected_assists": 0.0337,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 16,
                "accurate_pass": 13,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 82,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.215,
                "expected_assists": 0.1187,
                "total_shots": 1,
                "total_pass": 24,
                "accurate_pass": 20,
                "key_pass": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 79,
                "rating": 7.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.7893,
                "expected_assists": 0.2452,
                "total_shots": 5,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 21,
                "accurate_pass": 17,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.2206,
                "expected_assists": 0.4077,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 25,
                "key_pass": 2,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1648,
            "combined_rank_score": 667.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 371.0,
            "sofascore_rating": 6.9688,
            "sofascore_appearances": 32.0,
            "fifa_rank": 964.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0084,
            "source_file": "data/player_rankings.csv",
            "player_name": "Georges Mikautadze",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Andrew Robertson",
                  "ranking": 1643
                },
                {
                  "player_name": "Dango Ouattara",
                  "ranking": 1644
                },
                {
                  "player_name": "Aziz Kholmurodov",
                  "ranking": 1645
                },
                {
                  "player_name": "Uroš Kojić",
                  "ranking": 1646
                },
                {
                  "player_name": "Josh Risdon",
                  "ranking": 1647
                }
              ],
              "lower": [
                {
                  "player_name": "Trai Hume",
                  "ranking": 1649
                },
                {
                  "player_name": "Alfonso Pedraza",
                  "ranking": 1650
                },
                {
                  "player_name": "Lukáš Provod",
                  "ranking": 1651
                },
                {
                  "player_name": "Isi Palazón",
                  "ranking": 1652
                },
                {
                  "player_name": "Walter Benítez",
                  "ranking": 1653
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.778,
          "history_matches": 42,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 42,
            "data_confidence": 0.778,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0093,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 249.0,
              "goals_per90": 0.35714285714285715,
              "assists_per90": 0.35714285714285715,
              "shots_per90": 3.61,
              "shots_on_target_pct": 40.0,
              "prior_reliability": 0.1867
            },
            "rationale": "XGBoost regressor (F_service) evaluated 42 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.19, gls/90: 0.35714285714285715, ast/90: 0.35714285714285715)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3639,
                "goals": 0.3735,
                "goal_rate": 0.3735,
                "shots_on_target": 1.1373,
                "total_shots": 2.3946,
                "expected_assists": 0.0921,
                "key_pass": 1.0874,
                "rating": 7.0084,
                "minutes": 83.68,
                "total_pass": 21.4696,
                "accurate_pass": 17.5389,
                "duels_won": 3.0521,
                "total_long_balls": 0.942,
                "accurate_long_balls": 0.8065,
                "total_opp_half_passes": 16.5706,
                "accurate_opp_half_passes": 13.1465,
                "crosses_total": 0.9786,
                "crosses_accurate": 0.1065,
                "touches": 37.4524,
                "possession_lost": 11.7827,
                "dispossessed": 1.1718,
                "duels_lost": 5.1904,
                "aerial_lost": 0.6322,
                "total_contest": 4.3773,
                "won_contest": 1.9129,
                "ball_recovery": 1.6925,
                "challenges_lost": 0.5044,
                "fouls": 0.5241,
                "fouls_drawn": 0.8521,
                "assists": 0.2193,
                "assist_rate": 0.2193,
                "interceptions": 0.2397,
                "tackles_won": 0.1439,
                "tackles": 0.1884,
                "clearances": 0.2528,
                "blocks": 0.0096,
                "big_chances_created": 0.1538,
                "big_chances_missed": 0.5732,
                "xgot": 0.5879,
                "offsides": 0.2166,
                "ball_carries": 11.9139,
                "total_progression": 47.0231,
                "progressive_carries": 2.3322,
                "shots_off_target": 1.2573
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1502,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1276,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0922,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0566,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.3883,
                  "accuratePass": 11.2234,
                  "totalOppositionHalfPasses": 10.1093,
                  "accurateOppositionHalfPasses": 8.3874,
                  "totalShots": 1.8308
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.363938570022583,
                    "model_output": 0.3639,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0702
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0419
                        },
                        {
                          "name": "goals",
                          "contribution": 0.036
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0168
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0099
                        }
                      ],
                      "others": -0.0068,
                      "total": 0.3639,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.306133
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.146259
                        },
                        {
                          "name": "goals",
                          "margin": 0.110661
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.047597
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.027116
                        }
                      ],
                      "others_margin": -0.018577
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.3734658360481262,
                    "model_output": 0.3735,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0848
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0357
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0312
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0207
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0184
                        }
                      ],
                      "others": -0.0178,
                      "total": 0.3735,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.352832
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.118004
                        },
                        {
                          "name": "goals",
                          "margin": 0.092819
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.057014
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.048281
                        }
                      ],
                      "others_margin": -0.046819
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 1.137281894683838,
                    "model_output": 1.1373,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.203
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0733
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0761
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0699
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.065
                        }
                      ],
                      "others": 0.1178,
                      "total": 1.1373,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.323172
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.095053
                        },
                        {
                          "name": "goals",
                          "margin": 0.089936
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.076004
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.065918
                        }
                      ],
                      "others_margin": 0.109329
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.394545555114746,
                    "model_output": 2.3945,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5513
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1465
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0741
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0672
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.063
                        }
                      ],
                      "others": 0.1122,
                      "total": 2.3945,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.551299
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.146456
                        },
                        {
                          "name": "goals",
                          "margin": 0.074099
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.067215
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.062997
                        }
                      ],
                      "others_margin": 0.11233
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.09213797748088837,
                    "model_output": 0.0921,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0171
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0087
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0056
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.005
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0043
                        }
                      ],
                      "others": 0.0057,
                      "total": 0.0921,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.236096
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.101124
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.060429
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.053924
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.048315
                        }
                      ],
                      "others_margin": 0.064196
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.0873644351959229,
                    "model_output": 1.0874,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2239
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.05
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0492
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0465
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0309
                        }
                      ],
                      "others": 0.155,
                      "total": 1.0874,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.282182
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.053485
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.049977
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.047169
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.03261
                        }
                      ],
                      "others_margin": 0.153695
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.008355617523193,
                    "model_output": 7.0084,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0841
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0431
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0363
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0259
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0203
                        }
                      ],
                      "others": 0.0279,
                      "total": 7.0084,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.08408
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.043125
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.036347
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.025941
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.020338
                        }
                      ],
                      "others_margin": 0.027679
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 42,
                  "role_matches": 27,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0093, quality 0.796)",
              "stats": {
                "expected_goals": 0.3673,
                "goals": 0.3769,
                "goal_rate": 0.3769,
                "shots_on_target": 1.1479,
                "total_shots": 2.4169,
                "expected_assists": 0.093,
                "key_pass": 1.0975,
                "rating": 7.0084,
                "minutes": 83.68,
                "total_pass": 21.6693,
                "accurate_pass": 17.702,
                "duels_won": 3.0805,
                "total_long_balls": 0.9508,
                "accurate_long_balls": 0.814,
                "total_opp_half_passes": 16.7247,
                "accurate_opp_half_passes": 13.2688,
                "crosses_total": 0.9877,
                "crosses_accurate": 0.1075,
                "touches": 37.8007,
                "possession_lost": 11.8923,
                "dispossessed": 1.1827,
                "duels_lost": 5.2387,
                "aerial_lost": 0.6381,
                "total_contest": 4.418,
                "won_contest": 1.9307,
                "ball_recovery": 1.7082,
                "challenges_lost": 0.5091,
                "fouls": 0.529,
                "fouls_drawn": 0.86,
                "assists": 0.2213,
                "assist_rate": 0.2213,
                "interceptions": 0.2419,
                "tackles_won": 0.1452,
                "tackles": 0.1902,
                "clearances": 0.2552,
                "blocks": 0.0097,
                "big_chances_created": 0.1552,
                "big_chances_missed": 0.5785,
                "xgot": 0.5934,
                "offsides": 0.2186,
                "ball_carries": 12.0247,
                "total_progression": 47.4604,
                "progressive_carries": 2.3539,
                "shots_off_target": 1.269
              },
              "params": {
                "market_value_eur": 43000000,
                "quality_factor": 0.7957,
                "boost_factor": 1.0093,
                "reference_quality": 0.505,
                "history_matches": 42,
                "history_shrink": 0.1064,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0129)",
              "stats": {
                "expected_goals": 0.3673,
                "goals": 0.3763,
                "goal_rate": 0.3763,
                "shots_on_target": 1.1505,
                "total_shots": 2.429,
                "expected_assists": 0.093,
                "key_pass": 1.0975,
                "rating": 7.0084,
                "minutes": 83.68,
                "total_pass": 21.6693,
                "accurate_pass": 17.702,
                "duels_won": 3.0805,
                "total_long_balls": 0.9508,
                "accurate_long_balls": 0.814,
                "total_opp_half_passes": 16.7247,
                "accurate_opp_half_passes": 13.2688,
                "crosses_total": 0.9835,
                "crosses_accurate": 0.1075,
                "touches": 37.8007,
                "possession_lost": 11.8923,
                "dispossessed": 1.1827,
                "duels_lost": 5.2387,
                "aerial_lost": 0.6381,
                "total_contest": 4.418,
                "won_contest": 1.9307,
                "ball_recovery": 1.7082,
                "challenges_lost": 0.5091,
                "fouls": 0.5307,
                "fouls_drawn": 0.8575,
                "assists": 0.2227,
                "assist_rate": 0.2227,
                "interceptions": 0.2388,
                "tackles_won": 0.1433,
                "tackles": 0.1902,
                "clearances": 0.2552,
                "blocks": 0.0097,
                "big_chances_created": 0.1552,
                "big_chances_missed": 0.5785,
                "xgot": 0.5934,
                "offsides": 0.2201,
                "ball_carries": 12.0247,
                "total_progression": 47.4604,
                "progressive_carries": 2.3539,
                "shots_off_target": 1.269
              },
              "params": {
                "blend_weight": 0.0129,
                "history_matches": 42,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9298,
                "prior_reliability": 0.1867,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.4169,
                  "after": 2.429
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3673,
                "goals": 0.3763,
                "goal_rate": 0.3763,
                "shots_on_target": 1.1505,
                "total_shots": 2.429,
                "expected_assists": 0.093,
                "key_pass": 1.0975,
                "rating": 7.0084,
                "minutes": 83.68,
                "total_pass": 21.6693,
                "accurate_pass": 17.702,
                "duels_won": 3.0805,
                "total_long_balls": 0.9508,
                "accurate_long_balls": 0.814,
                "total_opp_half_passes": 16.7247,
                "accurate_opp_half_passes": 13.2688,
                "crosses_total": 0.9835,
                "crosses_accurate": 0.1075,
                "touches": 37.8007,
                "possession_lost": 11.8923,
                "dispossessed": 1.1827,
                "duels_lost": 5.2387,
                "aerial_lost": 0.6381,
                "total_contest": 4.418,
                "won_contest": 1.9307,
                "ball_recovery": 1.7082,
                "challenges_lost": 0.5091,
                "fouls": 0.5307,
                "fouls_drawn": 0.8575,
                "assists": 0.2227,
                "assist_rate": 0.2227,
                "interceptions": 0.2388,
                "tackles_won": 0.1433,
                "tackles": 0.1902,
                "clearances": 0.2552,
                "blocks": 0.0097,
                "big_chances_created": 0.1552,
                "big_chances_missed": 0.5785,
                "xgot": 0.5934,
                "offsides": 0.2201,
                "ball_carries": 12.0247,
                "total_progression": 47.4604,
                "progressive_carries": 2.3539,
                "shots_off_target": 1.269
              },
              "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.422,
                "goals": 0.4323,
                "goal_rate": 0.4323,
                "shots_on_target": 1.3217,
                "total_shots": 2.7904,
                "expected_assists": 0.093,
                "key_pass": 1.0975,
                "rating": 7.0084,
                "minutes": 83.68,
                "total_pass": 21.6693,
                "accurate_pass": 17.702,
                "duels_won": 3.0805,
                "total_long_balls": 0.9508,
                "accurate_long_balls": 0.814,
                "total_opp_half_passes": 16.7247,
                "accurate_opp_half_passes": 13.2688,
                "crosses_total": 0.9835,
                "crosses_accurate": 0.1075,
                "touches": 37.8007,
                "possession_lost": 11.8923,
                "dispossessed": 1.1827,
                "duels_lost": 5.2387,
                "aerial_lost": 0.6381,
                "total_contest": 4.418,
                "won_contest": 1.9307,
                "ball_recovery": 1.7082,
                "challenges_lost": 0.5091,
                "fouls": 0.5307,
                "fouls_drawn": 0.8575,
                "assists": 0.2227,
                "assist_rate": 0.2227,
                "interceptions": 0.2388,
                "tackles_won": 0.1433,
                "tackles": 0.1902,
                "clearances": 0.2552,
                "blocks": 0.0097,
                "big_chances_created": 0.1552,
                "big_chances_missed": 0.6646,
                "xgot": 0.6817,
                "offsides": 0.2201,
                "ball_carries": 12.0247,
                "total_progression": 47.4604,
                "progressive_carries": 2.3539,
                "shots_off_target": 1.4578,
                "duel_xg_multiplier": 1.1488,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.301,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.301,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.1488,
                  "skill_edge": 0.1492,
                  "height_edge": -0.048,
                  "attacker_skill": 0.7957,
                  "defender_skill": 0.464,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Leandro Cabrera",
                      "market_value": 930000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    },
                    {
                      "player": "Vanja Drkušić",
                      "market_value": 5500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4907
                    }
                  ],
                  "xg_override": 0.422
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.429,
                  "after": 2.7904
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.269,
                  "after": 1.4578
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.1505,
                  "after": 1.3217
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.5934,
                  "after": 0.6817
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.5785,
                  "after": 0.6646
                },
                {
                  "stat": "goals",
                  "before": 0.3763,
                  "after": 0.4323
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3673,
                  "after": 0.422
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.422,
                "goal_rate": 0.4323,
                "goals": 0,
                "shots_on_target": 1.3217,
                "total_shots": 2.7904,
                "expected_assists": 0.093,
                "key_pass": 1.0975,
                "rating": 7.0084,
                "minutes": 83.68,
                "total_pass": 21.6693,
                "accurate_pass": 17.702,
                "duels_won": 3.0805,
                "total_long_balls": 0.9508,
                "accurate_long_balls": 0.814,
                "total_opp_half_passes": 16.7247,
                "accurate_opp_half_passes": 13.2688,
                "crosses_total": 0.9835,
                "crosses_accurate": 0.1075,
                "touches": 37.8007,
                "possession_lost": 11.8923,
                "dispossessed": 1.1827,
                "duels_lost": 5.2387,
                "aerial_lost": 0.6381,
                "total_contest": 4.418,
                "won_contest": 1.9307,
                "ball_recovery": 1.7082,
                "challenges_lost": 0.5091,
                "fouls": 0.5307,
                "fouls_drawn": 0.8575,
                "assist_rate": 0.2227,
                "assists": 0,
                "interceptions": 0.2388,
                "tackles_won": 0.1433,
                "tackles": 0.1902,
                "clearances": 0.2552,
                "blocks": 0.0097,
                "big_chances_created": 0.1552,
                "big_chances_missed": 0.6646,
                "xgot": 0.6817,
                "offsides": 0.2201,
                "ball_carries": 12.0247,
                "total_progression": 47.4604,
                "progressive_carries": 2.3539,
                "shots_off_target": 1.4578,
                "duel_xg_multiplier": 1.1488,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.301,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "expected_goals": 0.5317,
                "goal_rate": 0.4323,
                "goals": 0,
                "shots_on_target": 1.3217,
                "total_shots": 2.7904,
                "expected_assists": 0.1172,
                "key_pass": 1.0975,
                "rating": 7.0084,
                "minutes": 83.68,
                "total_pass": 21.6693,
                "accurate_pass": 17.702,
                "duels_won": 3.0805,
                "total_long_balls": 0.9508,
                "accurate_long_balls": 0.814,
                "total_opp_half_passes": 16.7247,
                "accurate_opp_half_passes": 13.2688,
                "crosses_total": 0.9835,
                "crosses_accurate": 0.1075,
                "touches": 37.8007,
                "possession_lost": 11.8923,
                "dispossessed": 1.1827,
                "duels_lost": 5.2387,
                "aerial_lost": 0.6381,
                "total_contest": 4.418,
                "won_contest": 1.9307,
                "ball_recovery": 1.7082,
                "challenges_lost": 0.5091,
                "fouls": 0.5307,
                "fouls_drawn": 0.8575,
                "assist_rate": 0.2227,
                "assists": 0,
                "interceptions": 0.2388,
                "tackles_won": 0.1433,
                "tackles": 0.1902,
                "clearances": 0.2552,
                "blocks": 0.0097,
                "big_chances_created": 0.1552,
                "big_chances_missed": 0.6646,
                "xgot": 0.859,
                "offsides": 0.2201,
                "ball_carries": 12.0247,
                "total_progression": 47.4604,
                "progressive_carries": 2.3539,
                "shots_off_target": 1.4578,
                "duel_xg_multiplier": 1.1488,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.301,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0218,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.422,
                  "after": 0.5317
                },
                {
                  "stat": "expected_assists",
                  "before": 0.093,
                  "after": 0.1172
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 79.0)",
              "stats": {
                "expected_goals": 0.5317,
                "goal_rate": 0.4323,
                "goals": 0,
                "shots_on_target": 1.3217,
                "total_shots": 2.7904,
                "expected_assists": 0.1172,
                "key_pass": 1.0975,
                "rating": 7.0084,
                "minutes": 83.68,
                "total_pass": 21.6693,
                "accurate_pass": 17.702,
                "duels_won": 3.0805,
                "total_long_balls": 0.9508,
                "accurate_long_balls": 0.814,
                "total_opp_half_passes": 16.7247,
                "accurate_opp_half_passes": 13.2688,
                "crosses_total": 0.9835,
                "crosses_accurate": 0.1075,
                "touches": 37.8007,
                "possession_lost": 11.8923,
                "dispossessed": 1.1827,
                "duels_lost": 5.2387,
                "aerial_lost": 0.6381,
                "total_contest": 4.418,
                "won_contest": 1.9307,
                "ball_recovery": 1.7082,
                "challenges_lost": 0.5091,
                "fouls": 0.5307,
                "fouls_drawn": 0.8575,
                "assist_rate": 0.2227,
                "assists": 0,
                "interceptions": 0.2388,
                "tackles_won": 0.1433,
                "tackles": 0.1902,
                "clearances": 0.2552,
                "blocks": 0.0097,
                "big_chances_created": 0.1552,
                "big_chances_missed": 0.6646,
                "xgot": 0.859,
                "offsides": 0.2201,
                "ball_carries": 12.0247,
                "total_progression": 47.4604,
                "progressive_carries": 2.3539,
                "shots_off_target": 1.4578,
                "duel_xg_multiplier": 1.1488,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.301,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0218,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 6,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1648,
                "fifa_rank": 964.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.5317,
                "goal_rate": 0.4323,
                "goals": 1,
                "shots_on_target": 1.3217,
                "total_shots": 2.7904,
                "expected_assists": 0.1172,
                "key_pass": 1.0975,
                "rating": 7.0084,
                "minutes": 83.68,
                "total_pass": 21.6693,
                "accurate_pass": 17.702,
                "duels_won": 3.0805,
                "total_long_balls": 0.9508,
                "accurate_long_balls": 0.814,
                "total_opp_half_passes": 16.7247,
                "accurate_opp_half_passes": 13.2688,
                "crosses_total": 0.9835,
                "crosses_accurate": 0.1075,
                "touches": 37.8007,
                "possession_lost": 11.8923,
                "dispossessed": 1.1827,
                "duels_lost": 5.2387,
                "aerial_lost": 0.6381,
                "total_contest": 4.418,
                "won_contest": 1.9307,
                "ball_recovery": 1.7082,
                "challenges_lost": 0.5091,
                "fouls": 0.5307,
                "fouls_drawn": 0.8575,
                "assist_rate": 0.2227,
                "assists": 0,
                "interceptions": 0.2388,
                "tackles_won": 0.1433,
                "tackles": 0.1902,
                "clearances": 0.2552,
                "blocks": 0.0097,
                "big_chances_created": 0.1552,
                "big_chances_missed": 0.6646,
                "xgot": 0.859,
                "offsides": 0.2201,
                "ball_carries": 12.0247,
                "total_progression": 47.4604,
                "progressive_carries": 2.3539,
                "shots_off_target": 1.4578,
                "duel_xg_multiplier": 1.1488,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.301,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.4124,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0218,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 1,
                "goal_probability": 0.4124,
                "goal_rate": 0.4323,
                "scorer_weight": 0.5433,
                "squad_weight_total": 1.9647,
                "weight_share": 0.2765,
                "finishing_factor": 1.0218,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.5317,
                "goal_rate": 0.4323,
                "goals": 1,
                "shots_on_target": 1.3217,
                "total_shots": 2.7904,
                "expected_assists": 0.1172,
                "key_pass": 1.0975,
                "rating": 7.0084,
                "minutes": 83.68,
                "total_pass": 21.6693,
                "accurate_pass": 17.702,
                "duels_won": 3.0805,
                "total_long_balls": 0.9508,
                "accurate_long_balls": 0.814,
                "total_opp_half_passes": 16.7247,
                "accurate_opp_half_passes": 13.2688,
                "crosses_total": 0.9835,
                "crosses_accurate": 0.1075,
                "touches": 37.8007,
                "possession_lost": 11.8923,
                "dispossessed": 1.1827,
                "duels_lost": 5.2387,
                "aerial_lost": 0.6381,
                "total_contest": 4.418,
                "won_contest": 1.9307,
                "ball_recovery": 1.7082,
                "challenges_lost": 0.5091,
                "fouls": 0.5307,
                "fouls_drawn": 0.8575,
                "assist_rate": 0.2227,
                "assists": 0,
                "interceptions": 0.2388,
                "tackles_won": 0.1433,
                "tackles": 0.1902,
                "clearances": 0.2552,
                "blocks": 0.0097,
                "big_chances_created": 0.1552,
                "big_chances_missed": 0.6646,
                "xgot": 0.859,
                "offsides": 0.2201,
                "ball_carries": 12.0247,
                "total_progression": 47.4604,
                "progressive_carries": 2.3539,
                "shots_off_target": 1.4578,
                "duel_xg_multiplier": 1.1488,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.301,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.4124,
                "projected_assists": 0,
                "assist_probability": 0.1106,
                "finishing_factor": 1.0218,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1106,
                "assist_rate": 0.2227,
                "provider_weight": 0.1465,
                "squad_weight_total": 1.3182,
                "weight_share": 0.1111,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Gerard Moreno": {
          "player_id": 146866,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 7,
          "height": 180,
          "market_value": 2400000,
          "stats": {
            "expected_goals": 0.313,
            "goal_rate": 0.242,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.1332,
            "key_pass": 1,
            "rating": 6.9661,
            "minutes": 77,
            "total_pass": 35,
            "accurate_pass": 29,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 25,
            "accurate_opp_half_passes": 20,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 48,
            "possession_lost": 10.0681,
            "dispossessed": 0.5776,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.3987,
            "offsides": 1,
            "ball_carries": 14,
            "total_progression": 34,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9354,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
            "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.2688,
            "projected_assists": 0,
            "assist_probability": 0.1247,
            "finishing_factor": 0.9786,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 82,
                "rating": 6.8,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0878,
                "expected_assists": 0.0443,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 37,
                "accurate_pass": 32,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.056,
                "expected_assists": 0.0271,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 8,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 23,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0324,
                "expected_assists": 0.0305,
                "total_shots": 1,
                "total_pass": 12,
                "accurate_pass": 11,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 23,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1801,
                "expected_assists": 0.0097,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 12,
                "accurate_pass": 6,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 62,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5012,
                "expected_assists": 0.6218,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 29,
                "accurate_pass": 21,
                "key_pass": 3,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 77,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.14,
                "expected_assists": 0.2546,
                "total_shots": 1,
                "total_pass": 38,
                "accurate_pass": 35,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 70,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4418,
                "expected_assists": 0.0609,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 35,
                "accurate_pass": 30,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 30,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7884,
                "expected_assists": 0.0168,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 10,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 34,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.151,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 16,
                "key_pass": 2,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 27,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0926,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 17,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 849,
            "combined_rank_score": 404.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 238.0,
            "sofascore_rating": 7.1318,
            "sofascore_appearances": 22.0,
            "fifa_rank": 570.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9661,
            "source_file": "data/player_rankings.csv",
            "player_name": "Gerard Moreno",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jovanny Bolívar",
                  "ranking": 844
                },
                {
                  "player_name": "Vicente Zenteno",
                  "ranking": 845
                },
                {
                  "player_name": "Ilir Krasniqi",
                  "ranking": 846
                },
                {
                  "player_name": "Domenico Berardi",
                  "ranking": 847
                },
                {
                  "player_name": "Sven Botman",
                  "ranking": 848
                }
              ],
              "lower": [
                {
                  "player_name": "Rustamzhon Abdukhamidov",
                  "ranking": 850
                },
                {
                  "player_name": "Matvey Safonov",
                  "ranking": 851
                },
                {
                  "player_name": "Leandro Trossard",
                  "ranking": 852
                },
                {
                  "player_name": "André-Franck Zambo Anguissa",
                  "ranking": 853
                },
                {
                  "player_name": "Igor Thiago",
                  "ranking": 854
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.765,
          "history_matches": 31,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 31,
            "data_confidence": 0.765,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9972,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "minutes": 135.0,
              "goals_per90": 0.6666666666666666,
              "assists_per90": 0.0,
              "shots_per90": 2.67,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.1
            },
            "rationale": "XGBoost regressor (F_service) evaluated 31 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.10, gls/90: 0.6666666666666666, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.2664,
                "goals": 0.2565,
                "goal_rate": 0.2565,
                "shots_on_target": 0.6728,
                "total_shots": 1.8766,
                "expected_assists": 0.106,
                "key_pass": 1.3888,
                "rating": 6.9661,
                "minutes": 77.47,
                "total_pass": 34.8433,
                "accurate_pass": 28.9599,
                "duels_won": 3.6266,
                "total_long_balls": 2.0539,
                "accurate_long_balls": 1.2386,
                "total_opp_half_passes": 24.7957,
                "accurate_opp_half_passes": 20.1493,
                "crosses_total": 0.9076,
                "crosses_accurate": 0.2019,
                "touches": 47.7736,
                "possession_lost": 10.0964,
                "dispossessed": 0.5792,
                "duels_lost": 3.002,
                "aerial_lost": 0.5482,
                "total_contest": 2.0462,
                "won_contest": 1.2282,
                "ball_recovery": 1.8681,
                "challenges_lost": 0.6544,
                "fouls": 0.5427,
                "fouls_drawn": 0.7749,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1073,
                "tackles_won": 0.3196,
                "tackles": 0.8007,
                "clearances": 1.1767,
                "blocks": 0.0136,
                "big_chances_created": 0.2986,
                "big_chances_missed": 0.2222,
                "xgot": 0.3392,
                "offsides": 0.6667,
                "ball_carries": 14.103,
                "total_progression": 34.3944,
                "progressive_carries": 0.876,
                "shots_off_target": 1.2038
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.151,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.1283,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1091,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0927,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0788,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.067,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0484,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.0411,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.035,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.2068,
                  "accuratePass": 19.62,
                  "totalOppositionHalfPasses": 17.7477,
                  "accurateOppositionHalfPasses": 14.5542,
                  "totalShots": 1.3123
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.2663896083831787,
                    "model_output": 0.2664,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0706
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0133
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0122
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0106
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0099
                        }
                      ],
                      "others": -0.0217,
                      "total": 0.2664,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.307788
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.048704
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.044407
                        },
                        {
                          "name": "goals",
                          "margin": 0.038774
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.034999
                        }
                      ],
                      "others_margin": -0.078695
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2565476894378662,
                    "model_output": 0.2565,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.074
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0217
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0163
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0145
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.011
                        }
                      ],
                      "others": 0.0165,
                      "total": 0.2565,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.314026
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.082509
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.066806
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.059622
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.044906
                        }
                      ],
                      "others_margin": 0.067192
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.6727908253669739,
                    "model_output": 0.6728,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.194
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0386
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0382
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0383
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0298
                        }
                      ],
                      "others": -0.0615,
                      "total": 0.6728,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.31079
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.05464
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.054124
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.051461
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.039721
                        }
                      ],
                      "others_margin": -0.087562
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.8765681982040405,
                    "model_output": 1.8766,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5081
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0868
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0427
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0332
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0316
                        }
                      ],
                      "others": -0.0324,
                      "total": 1.8766,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.508147
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.086757
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.042699
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.033167
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.031554
                        }
                      ],
                      "others_margin": -0.032393
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.10595670342445374,
                    "model_output": 0.106,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0131
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0091
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.01
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0109
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0083
                        }
                      ],
                      "others": 0.0069,
                      "total": 0.106,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.185296
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.111085
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.109747
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.10662
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.080577
                        }
                      ],
                      "others_margin": 0.067179
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.3888224363327026,
                    "model_output": 1.3888,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2103
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.1126
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.1034
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.091
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0849
                        }
                      ],
                      "others": 0.2819,
                      "total": 1.3888,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.267093
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.118298
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.097527
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.085313
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.079827
                        }
                      ],
                      "others_margin": 0.226828
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.966065883636475,
                    "model_output": 6.9661,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0627
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0618
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0285
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0244
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0167
                        }
                      ],
                      "others": 0.0012,
                      "total": 6.9661,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.062741
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.061816
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.028521
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.024409
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.016731
                        }
                      ],
                      "others_margin": 0.001003
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 31,
                  "role_matches": 20,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9972, quality 0.437)",
              "stats": {
                "expected_goals": 0.2656,
                "goals": 0.2558,
                "goal_rate": 0.2558,
                "shots_on_target": 0.6709,
                "total_shots": 1.8713,
                "expected_assists": 0.1057,
                "key_pass": 1.3849,
                "rating": 6.9661,
                "minutes": 77.47,
                "total_pass": 34.7457,
                "accurate_pass": 28.8788,
                "duels_won": 3.6164,
                "total_long_balls": 2.0481,
                "accurate_long_balls": 1.2351,
                "total_opp_half_passes": 24.7263,
                "accurate_opp_half_passes": 20.0929,
                "crosses_total": 0.9051,
                "crosses_accurate": 0.2013,
                "touches": 47.6398,
                "possession_lost": 10.0681,
                "dispossessed": 0.5776,
                "duels_lost": 2.9936,
                "aerial_lost": 0.5467,
                "total_contest": 2.0405,
                "won_contest": 1.2248,
                "ball_recovery": 1.8629,
                "challenges_lost": 0.6526,
                "fouls": 0.5412,
                "fouls_drawn": 0.7727,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.107,
                "tackles_won": 0.3187,
                "tackles": 0.7985,
                "clearances": 1.1734,
                "blocks": 0.0136,
                "big_chances_created": 0.2978,
                "big_chances_missed": 0.2216,
                "xgot": 0.3383,
                "offsides": 0.6648,
                "ball_carries": 14.0635,
                "total_progression": 34.2981,
                "progressive_carries": 0.8735,
                "shots_off_target": 1.2004
              },
              "params": {
                "market_value_eur": 2400000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9972,
                "reference_quality": 0.505,
                "history_matches": 31,
                "history_shrink": 0.1389,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0090)",
              "stats": {
                "expected_goals": 0.2656,
                "goals": 0.2587,
                "goal_rate": 0.2587,
                "shots_on_target": 0.6752,
                "total_shots": 1.8752,
                "expected_assists": 0.1057,
                "key_pass": 1.3849,
                "rating": 6.9661,
                "minutes": 77.47,
                "total_pass": 34.7457,
                "accurate_pass": 28.8788,
                "duels_won": 3.6164,
                "total_long_balls": 2.0481,
                "accurate_long_balls": 1.2351,
                "total_opp_half_passes": 24.7263,
                "accurate_opp_half_passes": 20.0929,
                "crosses_total": 0.9021,
                "crosses_accurate": 0.2013,
                "touches": 47.6398,
                "possession_lost": 10.0681,
                "dispossessed": 0.5776,
                "duels_lost": 2.9936,
                "aerial_lost": 0.5467,
                "total_contest": 2.0405,
                "won_contest": 1.2248,
                "ball_recovery": 1.8629,
                "challenges_lost": 0.6526,
                "fouls": 0.5519,
                "fouls_drawn": 0.7657,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.106,
                "tackles_won": 0.321,
                "tackles": 0.7985,
                "clearances": 1.1734,
                "blocks": 0.0136,
                "big_chances_created": 0.2978,
                "big_chances_missed": 0.2216,
                "xgot": 0.3383,
                "offsides": 0.664,
                "ball_carries": 14.0635,
                "total_progression": 34.2981,
                "progressive_carries": 0.8735,
                "shots_off_target": 1.2004
              },
              "params": {
                "blend_weight": 0.009,
                "history_matches": 31,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8608,
                "prior_reliability": 0.1,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.5412,
                  "after": 0.5519
                },
                {
                  "stat": "wasFouled",
                  "before": 0.7727,
                  "after": 0.7657
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2656,
                "goals": 0.2587,
                "goal_rate": 0.2587,
                "shots_on_target": 0.6752,
                "total_shots": 1.8756,
                "expected_assists": 0.1057,
                "key_pass": 1.3849,
                "rating": 6.9661,
                "minutes": 77.47,
                "total_pass": 34.7457,
                "accurate_pass": 28.8788,
                "duels_won": 3.6164,
                "total_long_balls": 2.0481,
                "accurate_long_balls": 1.2351,
                "total_opp_half_passes": 24.7263,
                "accurate_opp_half_passes": 20.0929,
                "crosses_total": 0.9021,
                "crosses_accurate": 0.2013,
                "touches": 47.6398,
                "possession_lost": 10.0681,
                "dispossessed": 0.5776,
                "duels_lost": 2.9936,
                "aerial_lost": 0.5467,
                "total_contest": 2.0405,
                "won_contest": 1.2248,
                "ball_recovery": 1.8629,
                "challenges_lost": 0.6526,
                "fouls": 0.5519,
                "fouls_drawn": 0.7657,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.106,
                "tackles_won": 0.321,
                "tackles": 0.7985,
                "clearances": 1.1734,
                "blocks": 0.0136,
                "big_chances_created": 0.2978,
                "big_chances_missed": 0.2216,
                "xgot": 0.3383,
                "offsides": 0.664,
                "ball_carries": 14.0635,
                "total_progression": 34.2981,
                "progressive_carries": 0.8735,
                "shots_off_target": 1.2004
              },
              "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.2484,
                "goals": 0.242,
                "goal_rate": 0.242,
                "shots_on_target": 0.6316,
                "total_shots": 1.7545,
                "expected_assists": 0.1057,
                "key_pass": 1.3849,
                "rating": 6.9661,
                "minutes": 77.47,
                "total_pass": 34.7457,
                "accurate_pass": 28.8788,
                "duels_won": 3.6164,
                "total_long_balls": 2.0481,
                "accurate_long_balls": 1.2351,
                "total_opp_half_passes": 24.7263,
                "accurate_opp_half_passes": 20.0929,
                "crosses_total": 0.9021,
                "crosses_accurate": 0.2013,
                "touches": 47.6398,
                "possession_lost": 10.0681,
                "dispossessed": 0.5776,
                "duels_lost": 2.9936,
                "aerial_lost": 0.5467,
                "total_contest": 2.0405,
                "won_contest": 1.2248,
                "ball_recovery": 1.8629,
                "challenges_lost": 0.6526,
                "fouls": 0.5519,
                "fouls_drawn": 0.7657,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.106,
                "tackles_won": 0.321,
                "tackles": 0.7985,
                "clearances": 1.1734,
                "blocks": 0.0136,
                "big_chances_created": 0.2978,
                "big_chances_missed": 0.2073,
                "xgot": 0.3164,
                "offsides": 0.664,
                "ball_carries": 14.0635,
                "total_progression": 34.2981,
                "progressive_carries": 0.8735,
                "shots_off_target": 1.1229,
                "duel_xg_multiplier": 0.9354,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.9354,
                  "skill_edge": -0.012,
                  "height_edge": -0.032,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.464,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Leandro Cabrera",
                      "market_value": 930000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    },
                    {
                      "player": "Vanja Drkušić",
                      "market_value": 5500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4907
                    }
                  ],
                  "xg_override": 0.2484
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.8756,
                  "after": 1.7545
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2004,
                  "after": 1.1229
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6752,
                  "after": 0.6316
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.3383,
                  "after": 0.3164
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2656,
                  "after": 0.2484
                },
                {
                  "stat": "goals",
                  "before": 0.2587,
                  "after": 0.242
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2216,
                  "after": 0.2073
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.2484,
                "goal_rate": 0.242,
                "goals": 0,
                "shots_on_target": 0.6316,
                "total_shots": 1.7545,
                "expected_assists": 0.1057,
                "key_pass": 1.3849,
                "rating": 6.9661,
                "minutes": 77.47,
                "total_pass": 34.7457,
                "accurate_pass": 28.8788,
                "duels_won": 3.6164,
                "total_long_balls": 2.0481,
                "accurate_long_balls": 1.2351,
                "total_opp_half_passes": 24.7263,
                "accurate_opp_half_passes": 20.0929,
                "crosses_total": 0.9021,
                "crosses_accurate": 0.2013,
                "touches": 47.6398,
                "possession_lost": 10.0681,
                "dispossessed": 0.5776,
                "duels_lost": 2.9936,
                "aerial_lost": 0.5467,
                "total_contest": 2.0405,
                "won_contest": 1.2248,
                "ball_recovery": 1.8629,
                "challenges_lost": 0.6526,
                "fouls": 0.5519,
                "fouls_drawn": 0.7657,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.106,
                "tackles_won": 0.321,
                "tackles": 0.7985,
                "clearances": 1.1734,
                "blocks": 0.0136,
                "big_chances_created": 0.2978,
                "big_chances_missed": 0.2073,
                "xgot": 0.3164,
                "offsides": 0.664,
                "ball_carries": 14.0635,
                "total_progression": 34.2981,
                "progressive_carries": 0.8735,
                "shots_off_target": 1.1229,
                "duel_xg_multiplier": 0.9354,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "expected_goals": 0.313,
                "goal_rate": 0.242,
                "goals": 0,
                "shots_on_target": 0.6316,
                "total_shots": 1.7545,
                "expected_assists": 0.1332,
                "key_pass": 1.3849,
                "rating": 6.9661,
                "minutes": 77.47,
                "total_pass": 34.7457,
                "accurate_pass": 28.8788,
                "duels_won": 3.6164,
                "total_long_balls": 2.0481,
                "accurate_long_balls": 1.2351,
                "total_opp_half_passes": 24.7263,
                "accurate_opp_half_passes": 20.0929,
                "crosses_total": 0.9021,
                "crosses_accurate": 0.2013,
                "touches": 47.6398,
                "possession_lost": 10.0681,
                "dispossessed": 0.5776,
                "duels_lost": 2.9936,
                "aerial_lost": 0.5467,
                "total_contest": 2.0405,
                "won_contest": 1.2248,
                "ball_recovery": 1.8629,
                "challenges_lost": 0.6526,
                "fouls": 0.5519,
                "fouls_drawn": 0.7657,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.106,
                "tackles_won": 0.321,
                "tackles": 0.7985,
                "clearances": 1.1734,
                "blocks": 0.0136,
                "big_chances_created": 0.2978,
                "big_chances_missed": 0.2073,
                "xgot": 0.3987,
                "offsides": 0.664,
                "ball_carries": 14.0635,
                "total_progression": 34.2981,
                "progressive_carries": 0.8735,
                "shots_off_target": 1.1229,
                "duel_xg_multiplier": 0.9354,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9786,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2484,
                  "after": 0.313
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1057,
                  "after": 0.1332
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 81.0)",
              "stats": {
                "expected_goals": 0.313,
                "goal_rate": 0.242,
                "goals": 0,
                "shots_on_target": 0.6316,
                "total_shots": 1.7545,
                "expected_assists": 0.1332,
                "key_pass": 1.3849,
                "rating": 6.9661,
                "minutes": 77.47,
                "total_pass": 34.7457,
                "accurate_pass": 28.8788,
                "duels_won": 3.6164,
                "total_long_balls": 2.0481,
                "accurate_long_balls": 1.2351,
                "total_opp_half_passes": 24.7263,
                "accurate_opp_half_passes": 20.0929,
                "crosses_total": 0.9021,
                "crosses_accurate": 0.2013,
                "touches": 47.6398,
                "possession_lost": 10.0681,
                "dispossessed": 0.5776,
                "duels_lost": 2.9936,
                "aerial_lost": 0.5467,
                "total_contest": 2.0405,
                "won_contest": 1.2248,
                "ball_recovery": 1.8629,
                "challenges_lost": 0.6526,
                "fouls": 0.5519,
                "fouls_drawn": 0.7657,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.106,
                "tackles_won": 0.321,
                "tackles": 0.7985,
                "clearances": 1.1734,
                "blocks": 0.0136,
                "big_chances_created": 0.2978,
                "big_chances_missed": 0.2073,
                "xgot": 0.3987,
                "offsides": 0.664,
                "ball_carries": 14.0635,
                "total_progression": 34.2981,
                "progressive_carries": 0.8735,
                "shots_off_target": 1.1229,
                "duel_xg_multiplier": 0.9354,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9786,
                "creation_factor": 0.8,
                "fifa_overall": 81.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": 849,
                "fifa_rank": 570.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.313,
                "goal_rate": 0.242,
                "goals": 0,
                "shots_on_target": 0.6316,
                "total_shots": 1.7545,
                "expected_assists": 0.1332,
                "key_pass": 1.3849,
                "rating": 6.9661,
                "minutes": 77.47,
                "total_pass": 34.7457,
                "accurate_pass": 28.8788,
                "duels_won": 3.6164,
                "total_long_balls": 2.0481,
                "accurate_long_balls": 1.2351,
                "total_opp_half_passes": 24.7263,
                "accurate_opp_half_passes": 20.0929,
                "crosses_total": 0.9021,
                "crosses_accurate": 0.2013,
                "touches": 47.6398,
                "possession_lost": 10.0681,
                "dispossessed": 0.5776,
                "duels_lost": 2.9936,
                "aerial_lost": 0.5467,
                "total_contest": 2.0405,
                "won_contest": 1.2248,
                "ball_recovery": 1.8629,
                "challenges_lost": 0.6526,
                "fouls": 0.5519,
                "fouls_drawn": 0.7657,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.106,
                "tackles_won": 0.321,
                "tackles": 0.7985,
                "clearances": 1.1734,
                "blocks": 0.0136,
                "big_chances_created": 0.2978,
                "big_chances_missed": 0.2073,
                "xgot": 0.3987,
                "offsides": 0.664,
                "ball_carries": 14.0635,
                "total_progression": 34.2981,
                "progressive_carries": 0.8735,
                "shots_off_target": 1.1229,
                "duel_xg_multiplier": 0.9354,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2688,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9786,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.2688,
                "goal_rate": 0.242,
                "scorer_weight": 0.3063,
                "squad_weight_total": 1.9647,
                "weight_share": 0.1559,
                "finishing_factor": 0.9786,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.313,
                "goal_rate": 0.242,
                "goals": 0,
                "shots_on_target": 0.6316,
                "total_shots": 1.7545,
                "expected_assists": 0.1332,
                "key_pass": 1.3849,
                "rating": 6.9661,
                "minutes": 77.47,
                "total_pass": 34.7457,
                "accurate_pass": 28.8788,
                "duels_won": 3.6164,
                "total_long_balls": 2.0481,
                "accurate_long_balls": 1.2351,
                "total_opp_half_passes": 24.7263,
                "accurate_opp_half_passes": 20.0929,
                "crosses_total": 0.9021,
                "crosses_accurate": 0.2013,
                "touches": 47.6398,
                "possession_lost": 10.0681,
                "dispossessed": 0.5776,
                "duels_lost": 2.9936,
                "aerial_lost": 0.5467,
                "total_contest": 2.0405,
                "won_contest": 1.2248,
                "ball_recovery": 1.8629,
                "challenges_lost": 0.6526,
                "fouls": 0.5519,
                "fouls_drawn": 0.7657,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.106,
                "tackles_won": 0.321,
                "tackles": 0.7985,
                "clearances": 1.1734,
                "blocks": 0.0136,
                "big_chances_created": 0.2978,
                "big_chances_missed": 0.2073,
                "xgot": 0.3987,
                "offsides": 0.664,
                "ball_carries": 14.0635,
                "total_progression": 34.2981,
                "progressive_carries": 0.8735,
                "shots_off_target": 1.1229,
                "duel_xg_multiplier": 0.9354,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2688,
                "projected_assists": 0,
                "assist_probability": 0.1247,
                "finishing_factor": 0.9786,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1247,
                "assist_rate": 0.0,
                "provider_weight": 0.1066,
                "squad_weight_total": 1.3182,
                "weight_share": 0.0808,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Alberto Moleiro": {
          "player_id": 1012444,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 172,
          "market_value": 54000000,
          "stats": {
            "expected_goals": 0.4104,
            "goal_rate": 0.4691,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 3,
            "expected_assists": 0.24,
            "key_pass": 2,
            "rating": 7.3623,
            "minutes": 80,
            "total_pass": 36,
            "accurate_pass": 31,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 28,
            "accurate_opp_half_passes": 23,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 52,
            "possession_lost": 12.4269,
            "dispossessed": 1.2091,
            "duels_lost": 5,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.328,
            "assists": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 1,
            "xgot": 0.5509,
            "offsides": 0,
            "ball_carries": 18,
            "total_progression": 85,
            "progressive_carries": 4,
            "shots_off_target": 2,
            "duel_xg_multiplier": 1.1585,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.5,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.308,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
            "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.3366,
            "projected_assists": 1,
            "assist_probability": 0.2134,
            "finishing_factor": 1.25,
            "creation_factor": 1.25,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 25,
                "rating": 7.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.2103,
                "expected_assists": 0.0183,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 7,
                "key_pass": 1,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 2,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.3085,
                "expected_assists": 0.1937,
                "total_shots": 4,
                "shots_on_target": 2,
                "total_pass": 39,
                "accurate_pass": 30,
                "key_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 86,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1043,
                "expected_assists": 0.1277,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 32,
                "accurate_pass": 30,
                "key_pass": 3,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 8.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 2.0,
                "assists": 2,
                "expected_goals": 0.8805,
                "expected_assists": 0.6499,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 47,
                "accurate_pass": 42,
                "key_pass": 7,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 80,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5374,
                "expected_assists": 0.6804,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 54,
                "accurate_pass": 44,
                "key_pass": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 35,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1381,
                "expected_assists": 0.1304,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 23,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 62,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2202,
                "expected_assists": 0.158,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 31,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 27,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2319,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 60,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0657,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 26,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 56,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1651,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 26,
                "key_pass": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1102,
            "combined_rank_score": 671.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 494.0,
            "sofascore_rating": 6.8622,
            "sofascore_appearances": 37.0,
            "fifa_rank": 849.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.3623,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alberto Moleiro",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Merih Demiral",
                  "ranking": 1097
                },
                {
                  "player_name": "César Azpilicueta",
                  "ranking": 1098
                },
                {
                  "player_name": "Sardor Mirzayev",
                  "ranking": 1099
                },
                {
                  "player_name": "Mukhammadkodir Khamraliev",
                  "ranking": 1100
                },
                {
                  "player_name": "Pascal Groß",
                  "ranking": 1101
                }
              ],
              "lower": [
                {
                  "player_name": "Angelo Stiller",
                  "ranking": 1103
                },
                {
                  "player_name": "Mauro Júnior",
                  "ranking": 1104
                },
                {
                  "player_name": "Konstantinos Tzolakis",
                  "ranking": 1105
                },
                {
                  "player_name": "Pau Torres",
                  "ranking": 1106
                },
                {
                  "player_name": "Ju-yeong Jo",
                  "ranking": 1107
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.766,
          "history_matches": 47,
          "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": 47,
            "data_confidence": 0.766,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0096,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "minutes": 142.0,
              "goals_per90": 0.0,
              "assists_per90": 0.625,
              "shots_per90": 0.0,
              "prior_reliability": 0.1067
            },
            "rationale": "XGBoost regressor (F_service) evaluated 47 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.11, gls/90: 0.0, ast/90: 0.625)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.2784,
                "goals": 0.4038,
                "goal_rate": 0.4038,
                "shots_on_target": 1.2483,
                "total_shots": 2.6802,
                "expected_assists": 0.1886,
                "key_pass": 1.9119,
                "rating": 7.3623,
                "minutes": 80.33,
                "total_pass": 36.1093,
                "accurate_pass": 30.6133,
                "duels_won": 2.412,
                "total_long_balls": 1.015,
                "accurate_long_balls": 0.574,
                "total_opp_half_passes": 28.0316,
                "accurate_opp_half_passes": 23.017,
                "crosses_total": 3.5312,
                "crosses_accurate": 1.3055,
                "touches": 51.2372,
                "possession_lost": 12.3087,
                "dispossessed": 1.1976,
                "duels_lost": 4.4788,
                "aerial_lost": 0.2489,
                "total_contest": 2.1153,
                "won_contest": 0.8755,
                "ball_recovery": 2.3355,
                "challenges_lost": 1.0442,
                "fouls": 0.7564,
                "fouls_drawn": 0.6245,
                "assists": 0.3234,
                "assist_rate": 0.3234,
                "interceptions": 0.2133,
                "tackles_won": 0.6272,
                "tackles": 0.8858,
                "clearances": 0.2991,
                "blocks": 0.0631,
                "big_chances_created": 0.5209,
                "big_chances_missed": 0.5846,
                "xgot": 0.3738,
                "offsides": 0.1966,
                "ball_carries": 17.6773,
                "total_progression": 84.4563,
                "progressive_carries": 3.5524,
                "shots_off_target": 1.4319
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.1501,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 8.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0783,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 35.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0481,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.3715,
                  "accuratePass": 25.671,
                  "totalOppositionHalfPasses": 24.1052,
                  "accurateOppositionHalfPasses": 19.9778,
                  "totalShots": 1.9545
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.27841266989707947,
                    "model_output": 0.2784,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0661
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0466
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0216
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0147
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0106
                        }
                      ],
                      "others": -0.0045,
                      "total": 0.2784,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.290721
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.163773
                        },
                        {
                          "name": "goals",
                          "margin": -0.072687
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.052415
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.038098
                        }
                      ],
                      "others_margin": -0.016181
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.4037531614303589,
                    "model_output": 0.4038,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0841
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0357
                        },
                        {
                          "name": "wasFouled",
                          "contribution": 0.0257
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0212
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0205
                        }
                      ],
                      "others": 0.0571,
                      "total": 0.4038,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.350324
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.118048
                        },
                        {
                          "name": "wasFouled",
                          "margin": 0.077109
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.059381
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.057393
                        }
                      ],
                      "others_margin": 0.152638
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 1.2482656240463257,
                    "model_output": 1.2483,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1928
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0704
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0597
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0633
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.055
                        }
                      ],
                      "others": 0.2749,
                      "total": 1.2483,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.309191
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.092653
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.072342
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.071459
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.058187
                        }
                      ],
                      "others_margin": 0.248694
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.6801886558532715,
                    "model_output": 2.6802,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5606
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1561
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.1521
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.1182
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0733
                        }
                      ],
                      "others": 0.2397,
                      "total": 2.6802,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.560643
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.156108
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.152093
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.118236
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.073345
                        }
                      ],
                      "others_margin": 0.239614
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.18857023119926453,
                    "model_output": 0.1886,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0152
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0144
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0109
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0089
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0096
                        }
                      ],
                      "others": 0.0653,
                      "total": 0.1886,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.212625
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.166315
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.109663
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.081402
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.080657
                        }
                      ],
                      "others_margin": 0.425126
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.91194486618042,
                    "model_output": 1.9119,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2247
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.1218
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.1276
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.1399
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.098
                        }
                      ],
                      "others": 0.5132,
                      "total": 1.9119,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.28312
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.125437
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.116422
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.113765
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.07265
                        }
                      ],
                      "others_margin": 0.312531
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.362339496612549,
                    "model_output": 7.3623,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0989
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0851
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0549
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0513
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0473
                        }
                      ],
                      "others": 0.254,
                      "total": 7.3623,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.098929
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.085095
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.054876
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.051276
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.047269
                        }
                      ],
                      "others_margin": 0.25405
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 47,
                  "role_matches": 37,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0096, quality 0.837)",
              "stats": {
                "expected_goals": 0.2811,
                "goals": 0.4076,
                "goal_rate": 0.4076,
                "shots_on_target": 1.2602,
                "total_shots": 2.7059,
                "expected_assists": 0.1904,
                "key_pass": 1.9303,
                "rating": 7.3623,
                "minutes": 80.33,
                "total_pass": 36.4559,
                "accurate_pass": 30.9072,
                "duels_won": 2.4352,
                "total_long_balls": 1.0247,
                "accurate_long_balls": 0.5795,
                "total_opp_half_passes": 28.3007,
                "accurate_opp_half_passes": 23.238,
                "crosses_total": 3.5651,
                "crosses_accurate": 1.318,
                "touches": 51.7291,
                "possession_lost": 12.4269,
                "dispossessed": 1.2091,
                "duels_lost": 4.5218,
                "aerial_lost": 0.2513,
                "total_contest": 2.1356,
                "won_contest": 0.8839,
                "ball_recovery": 2.3579,
                "challenges_lost": 1.0542,
                "fouls": 0.7637,
                "fouls_drawn": 0.6305,
                "assists": 0.3265,
                "assist_rate": 0.3265,
                "interceptions": 0.2153,
                "tackles_won": 0.6332,
                "tackles": 0.8943,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.5259,
                "big_chances_missed": 0.5902,
                "xgot": 0.3774,
                "offsides": 0.1985,
                "ball_carries": 17.847,
                "total_progression": 85.2671,
                "progressive_carries": 3.5865,
                "shots_off_target": 1.4456
              },
              "params": {
                "market_value_eur": 54000000,
                "quality_factor": 0.837,
                "boost_factor": 1.0096,
                "reference_quality": 0.505,
                "history_matches": 47,
                "history_shrink": 0.0962,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0067)",
              "stats": {
                "expected_goals": 0.2811,
                "goals": 0.4049,
                "goal_rate": 0.4049,
                "shots_on_target": 1.2518,
                "total_shots": 2.6879,
                "expected_assists": 0.1904,
                "key_pass": 1.9303,
                "rating": 7.3623,
                "minutes": 80.33,
                "total_pass": 36.4559,
                "accurate_pass": 30.9072,
                "duels_won": 2.4352,
                "total_long_balls": 1.0247,
                "accurate_long_balls": 0.5795,
                "total_opp_half_passes": 28.3007,
                "accurate_opp_half_passes": 23.238,
                "crosses_total": 3.5599,
                "crosses_accurate": 1.318,
                "touches": 51.7291,
                "possession_lost": 12.4269,
                "dispossessed": 1.2091,
                "duels_lost": 4.5218,
                "aerial_lost": 0.2513,
                "total_contest": 2.1356,
                "won_contest": 0.8839,
                "ball_recovery": 2.3579,
                "challenges_lost": 1.0542,
                "fouls": 0.7623,
                "fouls_drawn": 0.63,
                "assists": 0.328,
                "assist_rate": 0.328,
                "interceptions": 0.2139,
                "tackles_won": 0.6401,
                "tackles": 0.8943,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.5259,
                "big_chances_missed": 0.5902,
                "xgot": 0.3774,
                "offsides": 0.2009,
                "ball_carries": 17.847,
                "total_progression": 85.2671,
                "progressive_carries": 3.5865,
                "shots_off_target": 1.4456
              },
              "params": {
                "blend_weight": 0.0067,
                "history_matches": 47,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8926,
                "prior_reliability": 0.1067,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.7059,
                  "after": 2.6879
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.2602,
                  "after": 1.2518
                },
                {
                  "stat": "wonTackle",
                  "before": 0.6332,
                  "after": 0.6401
                },
                {
                  "stat": "totalCross",
                  "before": 3.5651,
                  "after": 3.5599
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2811,
                "goals": 0.4049,
                "goal_rate": 0.4049,
                "shots_on_target": 1.2518,
                "total_shots": 2.6974,
                "expected_assists": 0.1904,
                "key_pass": 1.9303,
                "rating": 7.3623,
                "minutes": 80.33,
                "total_pass": 36.4559,
                "accurate_pass": 30.9072,
                "duels_won": 2.4352,
                "total_long_balls": 1.0247,
                "accurate_long_balls": 0.5795,
                "total_opp_half_passes": 28.3007,
                "accurate_opp_half_passes": 23.238,
                "crosses_total": 3.5599,
                "crosses_accurate": 1.318,
                "touches": 51.7291,
                "possession_lost": 12.4269,
                "dispossessed": 1.2091,
                "duels_lost": 4.5218,
                "aerial_lost": 0.2513,
                "total_contest": 2.1356,
                "won_contest": 0.8839,
                "ball_recovery": 2.3579,
                "challenges_lost": 1.0542,
                "fouls": 0.7623,
                "fouls_drawn": 0.63,
                "assists": 0.328,
                "assist_rate": 0.328,
                "interceptions": 0.2139,
                "tackles_won": 0.6401,
                "tackles": 0.8943,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.5259,
                "big_chances_missed": 0.5902,
                "xgot": 0.3774,
                "offsides": 0.2009,
                "ball_carries": 17.847,
                "total_progression": 85.2671,
                "progressive_carries": 3.5865,
                "shots_off_target": 1.4456
              },
              "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.3257,
                "goals": 0.4691,
                "goal_rate": 0.4691,
                "shots_on_target": 1.4502,
                "total_shots": 3.1249,
                "expected_assists": 0.1904,
                "key_pass": 1.9303,
                "rating": 7.3623,
                "minutes": 80.33,
                "total_pass": 36.4559,
                "accurate_pass": 30.9072,
                "duels_won": 2.4352,
                "total_long_balls": 1.0247,
                "accurate_long_balls": 0.5795,
                "total_opp_half_passes": 28.3007,
                "accurate_opp_half_passes": 23.238,
                "crosses_total": 3.5599,
                "crosses_accurate": 1.318,
                "touches": 51.7291,
                "possession_lost": 12.4269,
                "dispossessed": 1.2091,
                "duels_lost": 4.5218,
                "aerial_lost": 0.2513,
                "total_contest": 2.1356,
                "won_contest": 0.8839,
                "ball_recovery": 2.3579,
                "challenges_lost": 1.0542,
                "fouls": 0.7623,
                "fouls_drawn": 0.63,
                "assists": 0.328,
                "assist_rate": 0.328,
                "interceptions": 0.2139,
                "tackles_won": 0.6401,
                "tackles": 0.8943,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.5259,
                "big_chances_missed": 0.6837,
                "xgot": 0.4372,
                "offsides": 0.2009,
                "ball_carries": 17.847,
                "total_progression": 85.2671,
                "progressive_carries": 3.5865,
                "shots_off_target": 1.6747,
                "duel_xg_multiplier": 1.1585,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.308,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.308,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.1585,
                  "skill_edge": 0.1678,
                  "height_edge": -0.06,
                  "attacker_skill": 0.837,
                  "defender_skill": 0.464,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Leandro Cabrera",
                      "market_value": 930000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    },
                    {
                      "player": "Vanja Drkušić",
                      "market_value": 5500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4907
                    }
                  ],
                  "xg_override": 0.3257
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.6974,
                  "after": 3.1249
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.4456,
                  "after": 1.6747
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.2518,
                  "after": 1.4502
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.5902,
                  "after": 0.6837
                },
                {
                  "stat": "goals",
                  "before": 0.4049,
                  "after": 0.4691
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.3774,
                  "after": 0.4372
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2811,
                  "after": 0.3257
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.3257,
                "goal_rate": 0.4691,
                "goals": 0,
                "shots_on_target": 1.4502,
                "total_shots": 3.1249,
                "expected_assists": 0.1904,
                "key_pass": 1.9303,
                "rating": 7.3623,
                "minutes": 80.33,
                "total_pass": 36.4559,
                "accurate_pass": 30.9072,
                "duels_won": 2.4352,
                "total_long_balls": 1.0247,
                "accurate_long_balls": 0.5795,
                "total_opp_half_passes": 28.3007,
                "accurate_opp_half_passes": 23.238,
                "crosses_total": 3.5599,
                "crosses_accurate": 1.318,
                "touches": 51.7291,
                "possession_lost": 12.4269,
                "dispossessed": 1.2091,
                "duels_lost": 4.5218,
                "aerial_lost": 0.2513,
                "total_contest": 2.1356,
                "won_contest": 0.8839,
                "ball_recovery": 2.3579,
                "challenges_lost": 1.0542,
                "fouls": 0.7623,
                "fouls_drawn": 0.63,
                "assist_rate": 0.328,
                "assists": 0,
                "interceptions": 0.2139,
                "tackles_won": 0.6401,
                "tackles": 0.8943,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.5259,
                "big_chances_missed": 0.6837,
                "xgot": 0.4372,
                "offsides": 0.2009,
                "ball_carries": 17.847,
                "total_progression": 85.2671,
                "progressive_carries": 3.5865,
                "shots_off_target": 1.6747,
                "duel_xg_multiplier": 1.1585,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.308,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "expected_goals": 0.4104,
                "goal_rate": 0.4691,
                "goals": 0,
                "shots_on_target": 1.4502,
                "total_shots": 3.1249,
                "expected_assists": 0.24,
                "key_pass": 1.9303,
                "rating": 7.3623,
                "minutes": 80.33,
                "total_pass": 36.4559,
                "accurate_pass": 30.9072,
                "duels_won": 2.4352,
                "total_long_balls": 1.0247,
                "accurate_long_balls": 0.5795,
                "total_opp_half_passes": 28.3007,
                "accurate_opp_half_passes": 23.238,
                "crosses_total": 3.5599,
                "crosses_accurate": 1.318,
                "touches": 51.7291,
                "possession_lost": 12.4269,
                "dispossessed": 1.2091,
                "duels_lost": 4.5218,
                "aerial_lost": 0.2513,
                "total_contest": 2.1356,
                "won_contest": 0.8839,
                "ball_recovery": 2.3579,
                "challenges_lost": 1.0542,
                "fouls": 0.7623,
                "fouls_drawn": 0.63,
                "assist_rate": 0.328,
                "assists": 0,
                "interceptions": 0.2139,
                "tackles_won": 0.6401,
                "tackles": 0.8943,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.5259,
                "big_chances_missed": 0.6837,
                "xgot": 0.5509,
                "offsides": 0.2009,
                "ball_carries": 17.847,
                "total_progression": 85.2671,
                "progressive_carries": 3.5865,
                "shots_off_target": 1.6747,
                "duel_xg_multiplier": 1.1585,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.308,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.3257,
                  "after": 0.4104
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1904,
                  "after": 0.24
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 79.0)",
              "stats": {
                "expected_goals": 0.4104,
                "goal_rate": 0.4691,
                "goals": 0,
                "shots_on_target": 1.4502,
                "total_shots": 3.1249,
                "expected_assists": 0.24,
                "key_pass": 1.9303,
                "rating": 7.3623,
                "minutes": 80.33,
                "total_pass": 36.4559,
                "accurate_pass": 30.9072,
                "duels_won": 2.4352,
                "total_long_balls": 1.0247,
                "accurate_long_balls": 0.5795,
                "total_opp_half_passes": 28.3007,
                "accurate_opp_half_passes": 23.238,
                "crosses_total": 3.5599,
                "crosses_accurate": 1.318,
                "touches": 51.7291,
                "possession_lost": 12.4269,
                "dispossessed": 1.2091,
                "duels_lost": 4.5218,
                "aerial_lost": 0.2513,
                "total_contest": 2.1356,
                "won_contest": 0.8839,
                "ball_recovery": 2.3579,
                "challenges_lost": 1.0542,
                "fouls": 0.7623,
                "fouls_drawn": 0.63,
                "assist_rate": 0.328,
                "assists": 0,
                "interceptions": 0.2139,
                "tackles_won": 0.6401,
                "tackles": 0.8943,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.5259,
                "big_chances_missed": 0.6837,
                "xgot": 0.5509,
                "offsides": 0.2009,
                "ball_carries": 17.847,
                "total_progression": 85.2671,
                "progressive_carries": 3.5865,
                "shots_off_target": 1.6747,
                "duel_xg_multiplier": 1.1585,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.308,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 1102,
                "fifa_rank": 849.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.4104,
                "goal_rate": 0.4691,
                "goals": 1,
                "shots_on_target": 1.4502,
                "total_shots": 3.1249,
                "expected_assists": 0.24,
                "key_pass": 1.9303,
                "rating": 7.3623,
                "minutes": 80.33,
                "total_pass": 36.4559,
                "accurate_pass": 30.9072,
                "duels_won": 2.4352,
                "total_long_balls": 1.0247,
                "accurate_long_balls": 0.5795,
                "total_opp_half_passes": 28.3007,
                "accurate_opp_half_passes": 23.238,
                "crosses_total": 3.5599,
                "crosses_accurate": 1.318,
                "touches": 51.7291,
                "possession_lost": 12.4269,
                "dispossessed": 1.2091,
                "duels_lost": 4.5218,
                "aerial_lost": 0.2513,
                "total_contest": 2.1356,
                "won_contest": 0.8839,
                "ball_recovery": 2.3579,
                "challenges_lost": 1.0542,
                "fouls": 0.7623,
                "fouls_drawn": 0.63,
                "assist_rate": 0.328,
                "assists": 0,
                "interceptions": 0.2139,
                "tackles_won": 0.6401,
                "tackles": 0.8943,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.5259,
                "big_chances_missed": 0.6837,
                "xgot": 0.5509,
                "offsides": 0.2009,
                "ball_carries": 17.847,
                "total_progression": 85.2671,
                "progressive_carries": 3.5865,
                "shots_off_target": 1.6747,
                "duel_xg_multiplier": 1.1585,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.308,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.3366,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 1,
                "goal_probability": 0.3366,
                "goal_rate": 0.4691,
                "scorer_weight": 0.513,
                "squad_weight_total": 1.9647,
                "weight_share": 0.2611,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.4104,
                "goal_rate": 0.4691,
                "goals": 1,
                "shots_on_target": 1.4502,
                "total_shots": 3.1249,
                "expected_assists": 0.24,
                "key_pass": 1.9303,
                "rating": 7.3623,
                "minutes": 80.33,
                "total_pass": 36.4559,
                "accurate_pass": 30.9072,
                "duels_won": 2.4352,
                "total_long_balls": 1.0247,
                "accurate_long_balls": 0.5795,
                "total_opp_half_passes": 28.3007,
                "accurate_opp_half_passes": 23.238,
                "crosses_total": 3.5599,
                "crosses_accurate": 1.318,
                "touches": 51.7291,
                "possession_lost": 12.4269,
                "dispossessed": 1.2091,
                "duels_lost": 4.5218,
                "aerial_lost": 0.2513,
                "total_contest": 2.1356,
                "won_contest": 0.8839,
                "ball_recovery": 2.3579,
                "challenges_lost": 1.0542,
                "fouls": 0.7623,
                "fouls_drawn": 0.63,
                "assist_rate": 0.328,
                "assists": 1,
                "interceptions": 0.2139,
                "tackles_won": 0.6401,
                "tackles": 0.8943,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.5259,
                "big_chances_missed": 0.6837,
                "xgot": 0.5509,
                "offsides": 0.2009,
                "ball_carries": 17.847,
                "total_progression": 85.2671,
                "progressive_carries": 3.5865,
                "shots_off_target": 1.6747,
                "duel_xg_multiplier": 1.1585,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.308,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Leandro Cabrera, Vanja Drkušić",
                "opponent_faced": "Leandro Cabrera, Vanja Drkušić",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.3366,
                "projected_assists": 1,
                "assist_probability": 0.2134,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.2134,
                "assist_rate": 0.328,
                "provider_weight": 0.3,
                "squad_weight_total": 1.3182,
                "weight_share": 0.2276,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Santi Comesaña": {
          "player_id": 843678,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 14,
          "height": 187,
          "market_value": 8400000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0805,
            "assist_rate": 0.0727,
            "assists": 0,
            "expected_goals": 0.0809,
            "goal_rate": 0.0549,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.9239,
            "minutes": 70,
            "total_pass": 42,
            "accurate_pass": 38,
            "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": 24,
            "accurate_opp_half_passes": 21,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 53,
            "possession_lost": 6.9204,
            "dispossessed": 0.7288,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1207,
            "ball_carries": 12,
            "total_progression": 36,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "duel_xg_multiplier": 1.099,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.9,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.517,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Álex Calatrava",
            "opponent_faced": "Álex Calatrava",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0777,
            "projected_assists": 0,
            "assist_probability": 0.0773,
            "finishing_factor": 0.9186,
            "creation_factor": 1.0773,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 8,
                "rating": 6.7,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0094,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 9,
                "accurate_pass": 8,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 1,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 66,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0507,
                "expected_assists": 0.0331,
                "total_shots": 1,
                "total_pass": 39,
                "accurate_pass": 38,
                "key_pass": 1,
                "interceptions": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 56,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0084,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 20,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 37,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0855,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 41,
                "key_pass": 1,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5685,
                "expected_assists": 0.0428,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 70,
                "accurate_pass": 65,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 28,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0293,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 24,
                "key_pass": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 62,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0546,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 46,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 84,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0171,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 43,
                "interceptions": 1,
                "clearances": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 56,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.459,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 26,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 64,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0162,
                "total_shots": 1,
                "total_pass": 26,
                "accurate_pass": 23,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1902,
            "combined_rank_score": 735.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 511.0,
            "sofascore_rating": 6.85,
            "sofascore_appearances": 34.0,
            "fifa_rank": 960.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9239,
            "source_file": "data/player_rankings.csv",
            "player_name": "Santi Comesaña",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jeong-hwan Kim",
                  "ranking": 1897
                },
                {
                  "player_name": "Ahmet Arslan",
                  "ranking": 1898
                },
                {
                  "player_name": "Matteo Gabbia",
                  "ranking": 1899
                },
                {
                  "player_name": "Otabek Jurakuziev",
                  "ranking": 1900
                },
                {
                  "player_name": "Choi Han-sol",
                  "ranking": 1901
                }
              ],
              "lower": [
                {
                  "player_name": "Federico Lanzillotta",
                  "ranking": 1903
                },
                {
                  "player_name": "Dong-su Lee",
                  "ranking": 1904
                },
                {
                  "player_name": "Armand Laurienté",
                  "ranking": 1905
                },
                {
                  "player_name": "Álex Jiménez",
                  "ranking": 1906
                },
                {
                  "player_name": "Carlos Baleba",
                  "ranking": 1907
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.772,
          "history_matches": 43,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 43,
            "data_confidence": 0.772,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 199.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1467
            },
            "rationale": "XGBoost regressor (M_service) evaluated 43 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.15, 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.8556,
                "expected_assists": 0.0639,
                "assists": 0.0734,
                "assist_rate": 0.0734,
                "expected_goals": 0.0584,
                "goals": 0.0505,
                "goal_rate": 0.0505,
                "shots_on_target": 0.1526,
                "total_shots": 0.5823,
                "rating": 6.9239,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.463,
                "crosses_accurate": 0.1093,
                "touches": 53.2,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 0.2212,
                "aerial_lost": 0.6628,
                "interceptions": 1.1783,
                "tackles_won": 0.7787,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4729,
                "fouls_drawn": 0.8838,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1353,
                "xgot": 0.0872,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4297
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1501,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 37.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.3634,
                  "creative_index": 0.2891,
                  "expectedGoals": 0.0664,
                  "expectedAssists": 0.0585,
                  "totalOppositionHalfPasses": 20.6164
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8556391000747681,
                    "model_output": 0.8556,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1204
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.1018
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0697
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0299
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0241
                        }
                      ],
                      "others": 0.0704,
                      "total": 0.8556,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126822
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.106133
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.079776
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.036324
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.030269
                        }
                      ],
                      "others_margin": 0.086
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06391618400812149,
                    "model_output": 0.0639,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0161
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0103
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0059
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0035
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0029
                        }
                      ],
                      "others": -0.0029,
                      "total": 0.0639,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.210363
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.139449
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.077946
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.04926
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.04276
                        }
                      ],
                      "others_margin": -0.043522
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07338906079530716,
                    "model_output": 0.0734,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.012
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0077
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0075
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0036
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0025
                        }
                      ],
                      "others": 0.0013,
                      "total": 0.0734,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.152357
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.099724
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.097691
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.050309
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.034783
                        }
                      ],
                      "others_margin": 0.018705
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05843808501958847,
                    "model_output": 0.0584,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0143
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0124
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.007
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0054
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.0143,
                      "total": 0.0584,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.169959
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.149003
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.081437
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.068168
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.05929
                        }
                      ],
                      "others_margin": -0.217758
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05046621710062027,
                    "model_output": 0.0505,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.02
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0125
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0078
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0043
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0119,
                      "total": 0.0505,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.236002
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.181913
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.116886
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.063374
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.056778
                        }
                      ],
                      "others_margin": -0.211242
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.15255951881408691,
                    "model_output": 0.1526,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0921
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0341
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0248
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0164
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0123
                        }
                      ],
                      "others": -0.0356,
                      "total": 0.1526,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.341471
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.163596
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.121522
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.078781
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.063486
                        }
                      ],
                      "others_margin": -0.209615
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5822847485542297,
                    "model_output": 0.5823,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2707
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1197
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0461
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0345
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0333
                        }
                      ],
                      "others": -0.1369,
                      "total": 0.5823,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.270667
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119727
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.046069
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.034543
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.033345
                        }
                      ],
                      "others_margin": -0.136926
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.92388391494751,
                    "model_output": 6.9239,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0436
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0392
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0292
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0206
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": 0.014
                        }
                      ],
                      "others": -0.0367,
                      "total": 6.9239,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.043582
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.039184
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.029179
                        },
                        {
                          "name": "rating",
                          "margin": -0.020564
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": 0.013956
                        }
                      ],
                      "others_margin": -0.036648
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 43,
                  "role_matches": 35,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0000, quality 0.503)",
              "stats": {
                "key_pass": 0.8556,
                "expected_assists": 0.0639,
                "assists": 0.0734,
                "assist_rate": 0.0734,
                "expected_goals": 0.0584,
                "goals": 0.0505,
                "goal_rate": 0.0505,
                "shots_on_target": 0.1526,
                "total_shots": 0.5823,
                "rating": 6.9239,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.463,
                "crosses_accurate": 0.1093,
                "touches": 53.2,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 0.2212,
                "aerial_lost": 0.6628,
                "interceptions": 1.1783,
                "tackles_won": 0.7787,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4729,
                "fouls_drawn": 0.8838,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1353,
                "xgot": 0.0872,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4297
              },
              "params": {
                "market_value_eur": 8400000,
                "quality_factor": 0.5035,
                "boost_factor": 1.0,
                "reference_quality": 0.505,
                "history_matches": 43,
                "history_shrink": 0.1042,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0099)",
              "stats": {
                "key_pass": 0.8556,
                "expected_assists": 0.0639,
                "assists": 0.0727,
                "assist_rate": 0.0727,
                "expected_goals": 0.0584,
                "goals": 0.05,
                "goal_rate": 0.05,
                "shots_on_target": 0.1511,
                "total_shots": 0.5765,
                "rating": 6.9239,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4584,
                "crosses_accurate": 0.1093,
                "touches": 53.2,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 0.2212,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.785,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4794,
                "fouls_drawn": 0.8785,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1353,
                "xgot": 0.0872,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4297
              },
              "params": {
                "blend_weight": 0.0099,
                "history_matches": 43,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.779,
                "prior_reliability": 0.1467,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.4729,
                  "after": 1.4794
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7787,
                  "after": 0.785
                },
                {
                  "stat": "totalShots",
                  "before": 0.5823,
                  "after": 0.5765
                },
                {
                  "stat": "wasFouled",
                  "before": 0.8838,
                  "after": 0.8785
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.8556,
                "expected_assists": 0.0639,
                "assists": 0.0727,
                "assist_rate": 0.0727,
                "expected_goals": 0.0584,
                "goals": 0.05,
                "goal_rate": 0.05,
                "shots_on_target": 0.1511,
                "total_shots": 0.5808,
                "rating": 6.9239,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4584,
                "crosses_accurate": 0.1093,
                "touches": 53.2,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 0.2212,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.785,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4794,
                "fouls_drawn": 0.8785,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1353,
                "xgot": 0.0872,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4297
              },
              "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.8556,
                "expected_assists": 0.0639,
                "assists": 0.0727,
                "assist_rate": 0.0727,
                "expected_goals": 0.0642,
                "goals": 0.0549,
                "goal_rate": 0.0549,
                "shots_on_target": 0.1661,
                "total_shots": 0.6383,
                "rating": 6.9239,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4584,
                "crosses_accurate": 0.1093,
                "touches": 53.2,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.785,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4794,
                "fouls_drawn": 0.8785,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1487,
                "xgot": 0.0958,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4722,
                "duel_xg_multiplier": 1.099,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.517,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Álex Calatrava",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.517,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.099,
                  "skill_edge": 0.0194,
                  "height_edge": 0.048,
                  "attacker_skill": 0.5146,
                  "defender_skill": 0.4716,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Álex Calatrava",
                      "market_value": 4900000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.4716
                    }
                  ],
                  "xg_override": 0.0642
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.2212,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 0.5808,
                  "after": 0.6383
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4297,
                  "after": 0.4722
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1511,
                  "after": 0.1661
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1353,
                  "after": 0.1487
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0872,
                  "after": 0.0958
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0584,
                  "after": 0.0642
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.8556,
                "expected_assists": 0.0639,
                "assist_rate": 0.0727,
                "assists": 0,
                "expected_goals": 0.0642,
                "goal_rate": 0.0549,
                "goals": 0,
                "shots_on_target": 0.1661,
                "total_shots": 0.6383,
                "rating": 6.9239,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4584,
                "crosses_accurate": 0.1093,
                "touches": 53.2,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.785,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4794,
                "fouls_drawn": 0.8785,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1487,
                "xgot": 0.0958,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4722,
                "duel_xg_multiplier": 1.099,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.517,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "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": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "key_pass": 0.8556,
                "expected_assists": 0.0805,
                "assist_rate": 0.0727,
                "assists": 0,
                "expected_goals": 0.0809,
                "goal_rate": 0.0549,
                "goals": 0,
                "shots_on_target": 0.1661,
                "total_shots": 0.6383,
                "rating": 6.9239,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4584,
                "crosses_accurate": 0.1093,
                "touches": 53.2,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.785,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4794,
                "fouls_drawn": 0.8785,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1487,
                "xgot": 0.1207,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4722,
                "duel_xg_multiplier": 1.099,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.517,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9186,
                "creation_factor": 1.0773
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0642,
                  "after": 0.0809
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0639,
                  "after": 0.0805
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 79.0)",
              "stats": {
                "key_pass": 0.8556,
                "expected_assists": 0.0805,
                "assist_rate": 0.0727,
                "assists": 0,
                "expected_goals": 0.0809,
                "goal_rate": 0.0549,
                "goals": 0,
                "shots_on_target": 0.1661,
                "total_shots": 0.6383,
                "rating": 6.9239,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4584,
                "crosses_accurate": 0.1093,
                "touches": 53.2,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.785,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4794,
                "fouls_drawn": 0.8785,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1487,
                "xgot": 0.1207,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4722,
                "duel_xg_multiplier": 1.099,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.517,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9186,
                "creation_factor": 1.0773,
                "fifa_overall": 79.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": 1902,
                "fifa_rank": 960.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.8556,
                "expected_assists": 0.0805,
                "assist_rate": 0.0727,
                "assists": 0,
                "expected_goals": 0.0809,
                "goal_rate": 0.0549,
                "goals": 0,
                "shots_on_target": 0.1661,
                "total_shots": 0.6383,
                "rating": 6.9239,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4584,
                "crosses_accurate": 0.1093,
                "touches": 53.2,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.785,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4794,
                "fouls_drawn": 0.8785,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1487,
                "xgot": 0.1207,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4722,
                "duel_xg_multiplier": 1.099,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.517,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0777,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9186,
                "creation_factor": 1.0773,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0777,
                "goal_rate": 0.0549,
                "scorer_weight": 0.0743,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0378,
                "finishing_factor": 0.9186,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.8556,
                "expected_assists": 0.0805,
                "assist_rate": 0.0727,
                "assists": 0,
                "expected_goals": 0.0809,
                "goal_rate": 0.0549,
                "goals": 0,
                "shots_on_target": 0.1661,
                "total_shots": 0.6383,
                "rating": 6.9239,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4584,
                "crosses_accurate": 0.1093,
                "touches": 53.2,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.785,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4794,
                "fouls_drawn": 0.8785,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1487,
                "xgot": 0.1207,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4722,
                "duel_xg_multiplier": 1.099,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.517,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0777,
                "projected_assists": 0,
                "assist_probability": 0.0773,
                "finishing_factor": 0.9186,
                "creation_factor": 1.0773,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0773,
                "assist_rate": 0.0727,
                "provider_weight": 0.0867,
                "squad_weight_total": 1.3182,
                "weight_share": 0.0658,
                "creation_factor": 1.0773,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Carlos Maciá": {
          "player_id": 2238900,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 16,
          "height": 194,
          "market_value": 14500000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.051,
            "assist_rate": 0.0497,
            "assists": 0,
            "expected_goals": 0.0639,
            "goal_rate": 0.0632,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.849,
            "minutes": 82,
            "total_pass": 21,
            "accurate_pass": 18,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 14,
            "accurate_opp_half_passes": 11,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 29,
            "possession_lost": 4.6134,
            "dispossessed": 0.2618,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "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": 5,
            "total_progression": 5,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.1673,
            "dribbles_attempted": 2,
            "dribbles_successful": 1.0,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.564,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Álex Calatrava",
            "opponent_faced": "Álex Calatrava",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0619,
            "projected_assists": 0,
            "assist_probability": 0.0497,
            "finishing_factor": 1.1241,
            "creation_factor": 1.1017,
            "fifa_overall": 65.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0916,
                "expected_assists": 0.0689,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 56,
                "accurate_pass": 46,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 5,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 66,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0138,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 29,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 8,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 10,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 34,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0133,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 27,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083224,
              "match_date": "2026-01-17",
              "home_team": "Real Betis",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 9,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083198,
              "match_date": "2026-01-03",
              "home_team": "Elche",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 14,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0071,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "tackles": 4,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083190,
              "match_date": "2025-12-21",
              "home_team": "Villarreal",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "clearances": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 7717,
            "combined_rank_score": 6124.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 11804.0,
            "fifa_overall": 65.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.849,
            "source_file": "data/player_rankings.csv",
            "player_name": "Carlos Maciá",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luís Silva",
                  "ranking": 7712
                },
                {
                  "player_name": "Ivan Zlobin",
                  "ranking": 7713
                },
                {
                  "player_name": "Ferro",
                  "ranking": 7714
                },
                {
                  "player_name": "Liziero",
                  "ranking": 7715
                },
                {
                  "player_name": "Ianis Stoica",
                  "ranking": 7716
                }
              ],
              "lower": [
                {
                  "player_name": "Facundo Agustín Cáseres",
                  "ranking": 7718
                },
                {
                  "player_name": "Weverson",
                  "ranking": 7719
                },
                {
                  "player_name": "José Fontán",
                  "ranking": 7720
                },
                {
                  "player_name": "Dario Špikić",
                  "ranking": 7721
                },
                {
                  "player_name": "Miguel Maga",
                  "ranking": 7722
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.755,
          "history_matches": 11,
          "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": 11,
            "data_confidence": 0.755,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0064,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "minutes": 47.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 11 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, 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.4829,
                "expected_assists": 0.0402,
                "assists": 0.0497,
                "assist_rate": 0.0497,
                "expected_goals": 0.0431,
                "goals": 0.0541,
                "goal_rate": 0.0541,
                "shots_on_target": 0.1458,
                "total_shots": 0.572,
                "rating": 6.849,
                "minutes": 82.49,
                "total_pass": 21.22,
                "accurate_pass": 17.9158,
                "duels_won": 2.7877,
                "total_long_balls": 1.5872,
                "accurate_long_balls": 0.6965,
                "total_own_half_passes": 7.7921,
                "accurate_own_half_passes": 7.1039,
                "total_opp_half_passes": 13.4279,
                "accurate_opp_half_passes": 10.8119,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 28.3559,
                "possession_lost": 4.5841,
                "dispossessed": 0.2601,
                "duels_lost": 2.2162,
                "aerial_won": 0.3603,
                "aerial_lost": 0.2601,
                "interceptions": 0.7536,
                "tackles_won": 1.0736,
                "tackles": 1.921,
                "clearances": 0.8367,
                "total_contest": 0.3187,
                "won_contest": 0.0355,
                "challenges_lost": 0.6308,
                "fouls": 0.7819,
                "fouls_drawn": 0.4709,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4196,
                "total_progression": 4.884,
                "progressive_carries": 0.2925,
                "shots_off_target": 0.4262
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1801,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1531,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1302,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1106,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.094,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.0799,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0679,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-01-17",
                    "opponent": "Real Betis",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0578,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "Elche",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0491,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2025-12-21",
                    "opponent": "FC Barcelona",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0417,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 11.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.2156,
                  "creative_index": 0.0822,
                  "expectedGoals": 0.0187,
                  "expectedAssists": 0.0169,
                  "totalOppositionHalfPasses": 13.4279
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.4829004108905792,
                    "model_output": 0.4829,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.1342
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1172
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1066
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0788
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0312
                        }
                      ],
                      "others": -0.1738,
                      "total": 0.4829,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.163413
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.144108
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.130204
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.108419
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.046406
                        }
                      ],
                      "others_margin": -0.307384
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04023032262921333,
                    "model_output": 0.0402,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0191
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0148
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0076
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0051
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.01,
                      "total": 0.0402,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.255169
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.25388
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.139398
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.091203
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.063469
                        }
                      ],
                      "others_margin": -0.223033
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04966018348932266,
                    "model_output": 0.0497,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0115
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0072
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0067
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0055
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0046
                        }
                      ],
                      "others": -0.0142,
                      "total": 0.0497,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.144726
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.093125
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.086387
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.076598
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.06982
                        }
                      ],
                      "others_margin": -0.253307
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.043081045150756836,
                    "model_output": 0.0431,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0292
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0107
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0051
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0023
                        }
                      ],
                      "others": -0.0134,
                      "total": 0.0431,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.385062
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.187801
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.140859
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.089305
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.040739
                        }
                      ],
                      "others_margin": -0.271923
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05412938818335533,
                    "model_output": 0.0541,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0199
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0137
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0079
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.005
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0043
                        }
                      ],
                      "others": -0.0059,
                      "total": 0.0541,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.234588
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.201189
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.121144
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.074063
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.068494
                        }
                      ],
                      "others_margin": -0.105156
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14576172828674316,
                    "model_output": 0.1458,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0924
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0346
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0343
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0295
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0087
                        }
                      ],
                      "others": -0.0422,
                      "total": 0.1458,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.34282
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.142645
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.141348
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.139753
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.045239
                        }
                      ],
                      "others_margin": -0.254494
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5719548463821411,
                    "model_output": 0.572,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2727
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1117
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0552
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0413
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0389
                        }
                      ],
                      "others": -0.1157,
                      "total": 0.572,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.27274
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.111691
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.055202
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.041299
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.038888
                        }
                      ],
                      "others_margin": -0.115715
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.849004745483398,
                    "model_output": 6.849,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0354
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0302
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0215
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0148
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": 0.0134
                        }
                      ],
                      "others": -0.0315,
                      "total": 6.849,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.035413
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.030249
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.021471
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.014822
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": 0.013439
                        }
                      ],
                      "others_margin": -0.031442
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 11,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0064, quality 0.574)",
              "stats": {
                "key_pass": 0.486,
                "expected_assists": 0.0405,
                "assists": 0.05,
                "assist_rate": 0.05,
                "expected_goals": 0.0434,
                "goals": 0.0545,
                "goal_rate": 0.0545,
                "shots_on_target": 0.1467,
                "total_shots": 0.5756,
                "rating": 6.849,
                "minutes": 82.49,
                "total_pass": 21.3558,
                "accurate_pass": 18.0305,
                "duels_won": 2.8055,
                "total_long_balls": 1.5974,
                "accurate_long_balls": 0.701,
                "total_own_half_passes": 7.842,
                "accurate_own_half_passes": 7.1494,
                "total_opp_half_passes": 13.5138,
                "accurate_opp_half_passes": 10.8811,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 28.5374,
                "possession_lost": 4.6134,
                "dispossessed": 0.2618,
                "duels_lost": 2.2304,
                "aerial_won": 0.3626,
                "aerial_lost": 0.2618,
                "interceptions": 0.7584,
                "tackles_won": 1.0805,
                "tackles": 1.9333,
                "clearances": 0.8421,
                "total_contest": 0.3207,
                "won_contest": 0.0357,
                "challenges_lost": 0.6348,
                "fouls": 0.7869,
                "fouls_drawn": 0.4739,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4543,
                "total_progression": 4.9153,
                "progressive_carries": 0.2944,
                "shots_off_target": 0.4289
              },
              "params": {
                "market_value_eur": 14500000,
                "quality_factor": 0.5737,
                "boost_factor": 1.0064,
                "reference_quality": 0.505,
                "history_matches": 11,
                "history_shrink": 0.3125,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0068)",
              "stats": {
                "key_pass": 0.486,
                "expected_assists": 0.0405,
                "assists": 0.0497,
                "assist_rate": 0.0497,
                "expected_goals": 0.0434,
                "goals": 0.0541,
                "goal_rate": 0.0541,
                "shots_on_target": 0.1457,
                "total_shots": 0.5717,
                "rating": 6.849,
                "minutes": 82.49,
                "total_pass": 21.3558,
                "accurate_pass": 18.0305,
                "duels_won": 2.8055,
                "total_long_balls": 1.5974,
                "accurate_long_balls": 0.701,
                "total_own_half_passes": 7.842,
                "accurate_own_half_passes": 7.1494,
                "total_opp_half_passes": 13.5138,
                "accurate_opp_half_passes": 10.8811,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 28.5374,
                "possession_lost": 4.6134,
                "dispossessed": 0.2618,
                "duels_lost": 2.2304,
                "aerial_won": 0.3626,
                "aerial_lost": 0.2618,
                "interceptions": 0.7657,
                "tackles_won": 1.1104,
                "tackles": 1.9333,
                "clearances": 0.8421,
                "total_contest": 0.3207,
                "won_contest": 0.0357,
                "challenges_lost": 0.6348,
                "fouls": 0.794,
                "fouls_drawn": 0.4707,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4543,
                "total_progression": 4.9153,
                "progressive_carries": 0.2944,
                "shots_off_target": 0.4289
              },
              "params": {
                "blend_weight": 0.0068,
                "history_matches": 11,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9166,
                "prior_reliability": 0.0333,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.0805,
                  "after": 1.1104
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.7584,
                  "after": 0.7657
                },
                {
                  "stat": "fouls",
                  "before": 0.7869,
                  "after": 0.794
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.486,
                "expected_assists": 0.0405,
                "assists": 0.0497,
                "assist_rate": 0.0497,
                "expected_goals": 0.0434,
                "goals": 0.0541,
                "goal_rate": 0.0541,
                "shots_on_target": 0.1457,
                "total_shots": 0.5746,
                "rating": 6.849,
                "minutes": 82.49,
                "total_pass": 21.3558,
                "accurate_pass": 18.0305,
                "duels_won": 2.8055,
                "total_long_balls": 1.5974,
                "accurate_long_balls": 0.701,
                "total_own_half_passes": 7.842,
                "accurate_own_half_passes": 7.1494,
                "total_opp_half_passes": 13.5138,
                "accurate_opp_half_passes": 10.8811,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 28.5374,
                "possession_lost": 4.6134,
                "dispossessed": 0.2618,
                "duels_lost": 2.2304,
                "aerial_won": 0.3626,
                "aerial_lost": 0.2618,
                "interceptions": 0.7657,
                "tackles_won": 1.1104,
                "tackles": 1.9333,
                "clearances": 0.8421,
                "total_contest": 0.3207,
                "won_contest": 0.0357,
                "challenges_lost": 0.6348,
                "fouls": 0.794,
                "fouls_drawn": 0.4707,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4543,
                "total_progression": 4.9153,
                "progressive_carries": 0.2944,
                "shots_off_target": 0.4289
              },
              "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.486,
                "expected_assists": 0.0405,
                "assists": 0.0497,
                "assist_rate": 0.0497,
                "expected_goals": 0.0507,
                "goals": 0.0632,
                "goal_rate": 0.0632,
                "shots_on_target": 0.1701,
                "total_shots": 0.6708,
                "rating": 6.849,
                "minutes": 82.49,
                "total_pass": 21.3558,
                "accurate_pass": 18.0305,
                "duels_won": 2.8055,
                "total_long_balls": 1.5974,
                "accurate_long_balls": 0.701,
                "total_own_half_passes": 7.842,
                "accurate_own_half_passes": 7.1494,
                "total_opp_half_passes": 13.5138,
                "accurate_opp_half_passes": 10.8811,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 28.5374,
                "possession_lost": 4.6134,
                "dispossessed": 0.2618,
                "duels_lost": 2.2304,
                "aerial_won": 1.4,
                "aerial_lost": 0.2618,
                "interceptions": 0.7657,
                "tackles_won": 1.1104,
                "tackles": 1.9333,
                "clearances": 0.8421,
                "total_contest": 0.3207,
                "won_contest": 0.0357,
                "challenges_lost": 0.6348,
                "fouls": 0.794,
                "fouls_drawn": 0.4707,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4543,
                "total_progression": 4.9153,
                "progressive_carries": 0.2944,
                "shots_off_target": 0.5007,
                "duel_xg_multiplier": 1.1673,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.564,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Álex Calatrava",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.564,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.1673,
                  "skill_edge": 0.0538,
                  "height_edge": 0.06,
                  "attacker_skill": 0.5912,
                  "defender_skill": 0.4716,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Álex Calatrava",
                      "market_value": 4900000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.4716
                    }
                  ],
                  "xg_override": 0.0507
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.3626,
                  "after": 1.4
                },
                {
                  "stat": "totalShots",
                  "before": 0.5746,
                  "after": 0.6708
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4289,
                  "after": 0.5007
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1457,
                  "after": 0.1701
                },
                {
                  "stat": "goals",
                  "before": 0.0541,
                  "after": 0.0632
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0434,
                  "after": 0.0507
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.486,
                "expected_assists": 0.0405,
                "assist_rate": 0.0497,
                "assists": 0,
                "expected_goals": 0.0507,
                "goal_rate": 0.0632,
                "goals": 0,
                "shots_on_target": 0.1701,
                "total_shots": 0.6708,
                "rating": 6.849,
                "minutes": 82.49,
                "total_pass": 21.3558,
                "accurate_pass": 18.0305,
                "duels_won": 2.8055,
                "total_long_balls": 1.5974,
                "accurate_long_balls": 0.701,
                "total_own_half_passes": 7.842,
                "accurate_own_half_passes": 7.1494,
                "total_opp_half_passes": 13.5138,
                "accurate_opp_half_passes": 10.8811,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 28.5374,
                "possession_lost": 4.6134,
                "dispossessed": 0.2618,
                "duels_lost": 2.2304,
                "aerial_won": 1.4,
                "aerial_lost": 0.2618,
                "interceptions": 0.7657,
                "tackles_won": 1.1104,
                "tackles": 1.9333,
                "clearances": 0.8421,
                "total_contest": 0.3207,
                "won_contest": 0.0357,
                "challenges_lost": 0.6348,
                "fouls": 0.794,
                "fouls_drawn": 0.4707,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4543,
                "total_progression": 4.9153,
                "progressive_carries": 0.2944,
                "shots_off_target": 0.5007,
                "duel_xg_multiplier": 1.1673,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.564,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "key_pass": 0.486,
                "expected_assists": 0.051,
                "assist_rate": 0.0497,
                "assists": 0,
                "expected_goals": 0.0639,
                "goal_rate": 0.0632,
                "goals": 0,
                "shots_on_target": 0.1701,
                "total_shots": 0.6708,
                "rating": 6.849,
                "minutes": 82.49,
                "total_pass": 21.3558,
                "accurate_pass": 18.0305,
                "duels_won": 2.8055,
                "total_long_balls": 1.5974,
                "accurate_long_balls": 0.701,
                "total_own_half_passes": 7.842,
                "accurate_own_half_passes": 7.1494,
                "total_opp_half_passes": 13.5138,
                "accurate_opp_half_passes": 10.8811,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 28.5374,
                "possession_lost": 4.6134,
                "dispossessed": 0.2618,
                "duels_lost": 2.2304,
                "aerial_won": 1.4,
                "aerial_lost": 0.2618,
                "interceptions": 0.7657,
                "tackles_won": 1.1104,
                "tackles": 1.9333,
                "clearances": 0.8421,
                "total_contest": 0.3207,
                "won_contest": 0.0357,
                "challenges_lost": 0.6348,
                "fouls": 0.794,
                "fouls_drawn": 0.4707,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4543,
                "total_progression": 4.9153,
                "progressive_carries": 0.2944,
                "shots_off_target": 0.5007,
                "duel_xg_multiplier": 1.1673,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.564,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1241,
                "creation_factor": 1.1017
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0507,
                  "after": 0.0639
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0405,
                  "after": 0.051
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 65.0)",
              "stats": {
                "key_pass": 0.486,
                "expected_assists": 0.051,
                "assist_rate": 0.0497,
                "assists": 0,
                "expected_goals": 0.0639,
                "goal_rate": 0.0632,
                "goals": 0,
                "shots_on_target": 0.1701,
                "total_shots": 0.6708,
                "rating": 6.849,
                "minutes": 82.49,
                "total_pass": 21.3558,
                "accurate_pass": 18.0305,
                "duels_won": 2.8055,
                "total_long_balls": 1.5974,
                "accurate_long_balls": 0.701,
                "total_own_half_passes": 7.842,
                "accurate_own_half_passes": 7.1494,
                "total_opp_half_passes": 13.5138,
                "accurate_opp_half_passes": 10.8811,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 28.5374,
                "possession_lost": 4.6134,
                "dispossessed": 0.2618,
                "duels_lost": 2.2304,
                "aerial_won": 1.4,
                "aerial_lost": 0.2618,
                "interceptions": 0.7657,
                "tackles_won": 1.1104,
                "tackles": 1.9333,
                "clearances": 0.8421,
                "total_contest": 0.3207,
                "won_contest": 0.0357,
                "challenges_lost": 0.6348,
                "fouls": 0.794,
                "fouls_drawn": 0.4707,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4543,
                "total_progression": 4.9153,
                "progressive_carries": 0.2944,
                "shots_off_target": 0.5007,
                "duel_xg_multiplier": 1.1673,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.564,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1241,
                "creation_factor": 1.1017,
                "fifa_overall": 65.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": 7717,
                "fifa_rank": 11804.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 65.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.486,
                "expected_assists": 0.051,
                "assist_rate": 0.0497,
                "assists": 0,
                "expected_goals": 0.0639,
                "goal_rate": 0.0632,
                "goals": 0,
                "shots_on_target": 0.1701,
                "total_shots": 0.6708,
                "rating": 6.849,
                "minutes": 82.49,
                "total_pass": 21.3558,
                "accurate_pass": 18.0305,
                "duels_won": 2.8055,
                "total_long_balls": 1.5974,
                "accurate_long_balls": 0.701,
                "total_own_half_passes": 7.842,
                "accurate_own_half_passes": 7.1494,
                "total_opp_half_passes": 13.5138,
                "accurate_opp_half_passes": 10.8811,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 28.5374,
                "possession_lost": 4.6134,
                "dispossessed": 0.2618,
                "duels_lost": 2.2304,
                "aerial_won": 1.4,
                "aerial_lost": 0.2618,
                "interceptions": 0.7657,
                "tackles_won": 1.1104,
                "tackles": 1.9333,
                "clearances": 0.8421,
                "total_contest": 0.3207,
                "won_contest": 0.0357,
                "challenges_lost": 0.6348,
                "fouls": 0.794,
                "fouls_drawn": 0.4707,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4543,
                "total_progression": 4.9153,
                "progressive_carries": 0.2944,
                "shots_off_target": 0.5007,
                "duel_xg_multiplier": 1.1673,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.564,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0619,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1241,
                "creation_factor": 1.1017,
                "fifa_overall": 65.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0619,
                "goal_rate": 0.0632,
                "scorer_weight": 0.0718,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0366,
                "finishing_factor": 1.1241,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.486,
                "expected_assists": 0.051,
                "assist_rate": 0.0497,
                "assists": 0,
                "expected_goals": 0.0639,
                "goal_rate": 0.0632,
                "goals": 0,
                "shots_on_target": 0.1701,
                "total_shots": 0.6708,
                "rating": 6.849,
                "minutes": 82.49,
                "total_pass": 21.3558,
                "accurate_pass": 18.0305,
                "duels_won": 2.8055,
                "total_long_balls": 1.5974,
                "accurate_long_balls": 0.701,
                "total_own_half_passes": 7.842,
                "accurate_own_half_passes": 7.1494,
                "total_opp_half_passes": 13.5138,
                "accurate_opp_half_passes": 10.8811,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 28.5374,
                "possession_lost": 4.6134,
                "dispossessed": 0.2618,
                "duels_lost": 2.2304,
                "aerial_won": 1.4,
                "aerial_lost": 0.2618,
                "interceptions": 0.7657,
                "tackles_won": 1.1104,
                "tackles": 1.9333,
                "clearances": 0.8421,
                "total_contest": 0.3207,
                "won_contest": 0.0357,
                "challenges_lost": 0.6348,
                "fouls": 0.794,
                "fouls_drawn": 0.4707,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4543,
                "total_progression": 4.9153,
                "progressive_carries": 0.2944,
                "shots_off_target": 0.5007,
                "duel_xg_multiplier": 1.1673,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.564,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Álex Calatrava",
                "opponent_faced": "Álex Calatrava",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0619,
                "projected_assists": 0,
                "assist_probability": 0.0497,
                "finishing_factor": 1.1241,
                "creation_factor": 1.1017,
                "fifa_overall": 65.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0497,
                "assist_rate": 0.0497,
                "provider_weight": 0.0562,
                "squad_weight_total": 1.3182,
                "weight_share": 0.0426,
                "creation_factor": 1.1017,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Tajon Buchanan": {
          "player_id": 973290,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 17,
          "height": 183,
          "market_value": 13000000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.191,
            "assist_rate": 0.1213,
            "assists": 0,
            "expected_goals": 0.1812,
            "goal_rate": 0.1469,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 6.9355,
            "minutes": 72,
            "total_pass": 22,
            "accurate_pass": 19,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 13,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 41,
            "possession_lost": 11.5528,
            "dispossessed": 1.0876,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1171,
            "ball_carries": 14,
            "total_progression": 85,
            "progressive_carries": 3,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9446,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.1,
            "crosses_attempted": 2.3,
            "duel_win_rate": 0.422,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Mid vs Right Back — Wide Channel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Omar El Hilali",
            "opponent_faced": "Omar El Hilali",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1657,
            "projected_assists": 0,
            "assist_probability": 0.1739,
            "finishing_factor": 1.016,
            "creation_factor": 0.8497,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 87,
                "rating": 6.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1713,
                "expected_assists": 0.1416,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 33,
                "accurate_pass": 27,
                "key_pass": 4,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 4,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 79,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.136,
                "expected_assists": 0.0719,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 29,
                "accurate_pass": 25,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4075,
                "expected_assists": 0.6325,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 27,
                "accurate_pass": 26,
                "key_pass": 3,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 8,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 55,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0398,
                "expected_assists": 0.0496,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 28,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0346,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 16,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 63,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0194,
                "expected_assists": 0.1545,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 24,
                "accurate_pass": 22,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 29,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4605,
                "expected_assists": 0.0072,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 10,
                "accurate_pass": 9,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 34,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0764,
                "expected_assists": 0.0032,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 10,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 45,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0862,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 7,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083644,
              "match_date": "2026-05-13",
              "home_team": "Villarreal",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 30,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0206,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3318,
            "combined_rank_score": 1275.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 584.0,
            "sofascore_rating": 6.7941,
            "sofascore_appearances": 34.0,
            "fifa_rank": 1967.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9355,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tajon Buchanan",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Logan Costa",
                  "ranking": 3313
                },
                {
                  "player_name": "Santiago Ascacíbar",
                  "ranking": 3314
                },
                {
                  "player_name": "Rio Ngumoha",
                  "ranking": 3315
                },
                {
                  "player_name": "Kyle Walker-Peters",
                  "ranking": 3316
                },
                {
                  "player_name": "Alberto Costa",
                  "ranking": 3317
                }
              ],
              "lower": [
                {
                  "player_name": "Dion Drena Beljo",
                  "ranking": 3319
                },
                {
                  "player_name": "Aimar Oroz",
                  "ranking": 3320
                },
                {
                  "player_name": "Konstantinos Koulierakis",
                  "ranking": 3321
                },
                {
                  "player_name": "Óliver Torres",
                  "ranking": 3322
                },
                {
                  "player_name": "Daley Blind",
                  "ranking": 3323
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.764,
          "history_matches": 42,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 42,
            "data_confidence": 0.764,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0017,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "minutes": 127.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 2.83,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.0933
            },
            "rationale": "XGBoost regressor (M_service) evaluated 42 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, 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": 1.597,
                "expected_assists": 0.1513,
                "assists": 0.1219,
                "assist_rate": 0.1219,
                "expected_goals": 0.1519,
                "goals": 0.1562,
                "goal_rate": 0.1562,
                "shots_on_target": 0.6534,
                "total_shots": 1.7934,
                "rating": 6.9355,
                "minutes": 72.47,
                "total_pass": 21.7268,
                "accurate_pass": 18.497,
                "duels_won": 4.0073,
                "total_long_balls": 0.4949,
                "accurate_long_balls": 0.1893,
                "total_own_half_passes": 6.0857,
                "accurate_own_half_passes": 5.2849,
                "total_opp_half_passes": 15.6412,
                "accurate_opp_half_passes": 13.2123,
                "crosses_total": 3.0086,
                "crosses_accurate": 0.7536,
                "touches": 41.0502,
                "possession_lost": 11.5332,
                "dispossessed": 1.0858,
                "duels_lost": 5.3632,
                "aerial_won": 0.4564,
                "aerial_lost": 0.664,
                "interceptions": 0.5445,
                "tackles_won": 0.7623,
                "tackles": 1.1384,
                "clearances": 0.4703,
                "total_contest": 2.0965,
                "won_contest": 0.5212,
                "challenges_lost": 0.969,
                "fouls": 1.0691,
                "fouls_drawn": 1.8914,
                "blocks": 0.0466,
                "big_chances_created": 0.1809,
                "big_chances_missed": 0.1479,
                "xgot": 0.0982,
                "ball_carries": 14.4483,
                "total_progression": 84.5623,
                "progressive_carries": 3.2219,
                "shots_off_target": 1.14
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 87.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 55.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.0566,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.0481,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Sevilla",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.7713,
                  "creative_index": 0.66,
                  "expectedGoals": 0.1316,
                  "expectedAssists": 0.126,
                  "totalOppositionHalfPasses": 15.2707
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.5970228910446167,
                    "model_output": 1.597,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": 0.1236
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1403
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0874
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0841
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0434
                        }
                      ],
                      "others": 0.2279,
                      "total": 1.597,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.130042
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.129643
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.073014
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.065572
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.032243
                        }
                      ],
                      "others_margin": 0.153855
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.15131181478500366,
                    "model_output": 0.1513,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": 0.0108
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0108
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.01
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0064
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0061
                        }
                      ],
                      "others": 0.0223,
                      "total": 0.1513,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.119289
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.106816
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.090163
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.053739
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.048636
                        }
                      ],
                      "others_margin": 0.158723
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.12193288654088974,
                    "model_output": 0.1219,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": 0.0081
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0073
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0078
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0072
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0049
                        }
                      ],
                      "others": 0.0016,
                      "total": 0.1219,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.090705
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.075056
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.074882
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.064506
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.041765
                        }
                      ],
                      "others_margin": 0.013638
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.15192869305610657,
                    "model_output": 0.1519,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0202
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0167
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0159
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.01
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0031
                        }
                      ],
                      "others": 0.0008,
                      "total": 0.1519,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.199747
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.13976
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.11653
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.067148
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.020489
                        }
                      ],
                      "others_margin": 0.005139
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.15620914101600647,
                    "model_output": 0.1562,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0221
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0191
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0148
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0081
                        }
                      ],
                      "others": -0.0107,
                      "total": 0.1562,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.209461
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.151279
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.103179
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.050431
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.049968
                        }
                      ],
                      "others_margin": -0.066847
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.6533535718917847,
                    "model_output": 0.6534,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0876
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0598
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0645
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0356
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0193
                        }
                      ],
                      "others": 0.0683,
                      "total": 0.6534,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.243198
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.137409
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.129674
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.064972
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.033496
                        }
                      ],
                      "others_margin": 0.110386
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.793319821357727,
                    "model_output": 1.7933,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.384
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1671
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0648
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0504
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0479
                        }
                      ],
                      "others": 0.095,
                      "total": 1.7933,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.384009
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.167147
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.064788
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.05036
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.047911
                        }
                      ],
                      "others_margin": 0.094997
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.935494422912598,
                    "model_output": 6.9355,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0382
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0279
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0152
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0137
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0128
                        }
                      ],
                      "others": -0.0001,
                      "total": 6.9355,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.038166
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.027863
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.01521
                        },
                        {
                          "name": "rating",
                          "margin": -0.013657
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.012843
                        }
                      ],
                      "others_margin": -0.000126
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 42,
                  "role_matches": 26,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0017, quality 0.557)",
              "stats": {
                "key_pass": 1.5997,
                "expected_assists": 0.1516,
                "assists": 0.1221,
                "assist_rate": 0.1221,
                "expected_goals": 0.1522,
                "goals": 0.1565,
                "goal_rate": 0.1565,
                "shots_on_target": 0.6545,
                "total_shots": 1.7964,
                "rating": 6.9355,
                "minutes": 72.47,
                "total_pass": 21.7637,
                "accurate_pass": 18.5284,
                "duels_won": 4.0141,
                "total_long_balls": 0.4957,
                "accurate_long_balls": 0.1896,
                "total_own_half_passes": 6.096,
                "accurate_own_half_passes": 5.2939,
                "total_opp_half_passes": 15.6678,
                "accurate_opp_half_passes": 13.2348,
                "crosses_total": 3.0137,
                "crosses_accurate": 0.7549,
                "touches": 41.12,
                "possession_lost": 11.5528,
                "dispossessed": 1.0876,
                "duels_lost": 5.3723,
                "aerial_won": 0.4572,
                "aerial_lost": 0.6651,
                "interceptions": 0.5454,
                "tackles_won": 0.7636,
                "tackles": 1.1403,
                "clearances": 0.4711,
                "total_contest": 2.1001,
                "won_contest": 0.5221,
                "challenges_lost": 0.9706,
                "fouls": 1.0709,
                "fouls_drawn": 1.8946,
                "blocks": 0.0467,
                "big_chances_created": 0.1812,
                "big_chances_missed": 0.1482,
                "xgot": 0.0984,
                "ball_carries": 14.4729,
                "total_progression": 84.7061,
                "progressive_carries": 3.2274,
                "shots_off_target": 1.1419
              },
              "params": {
                "market_value_eur": 13000000,
                "quality_factor": 0.557,
                "boost_factor": 1.0017,
                "reference_quality": 0.505,
                "history_matches": 42,
                "history_shrink": 0.1064,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0065)",
              "stats": {
                "key_pass": 1.5997,
                "expected_assists": 0.1516,
                "assists": 0.1213,
                "assist_rate": 0.1213,
                "expected_goals": 0.1522,
                "goals": 0.1555,
                "goal_rate": 0.1555,
                "shots_on_target": 0.6577,
                "total_shots": 1.7995,
                "rating": 6.9355,
                "minutes": 72.47,
                "total_pass": 21.7637,
                "accurate_pass": 18.5284,
                "duels_won": 4.0141,
                "total_long_balls": 0.4957,
                "accurate_long_balls": 0.1896,
                "total_own_half_passes": 6.096,
                "accurate_own_half_passes": 5.2939,
                "total_opp_half_passes": 15.6678,
                "accurate_opp_half_passes": 13.2348,
                "crosses_total": 3.0277,
                "crosses_accurate": 0.7549,
                "touches": 41.12,
                "possession_lost": 11.5528,
                "dispossessed": 1.0876,
                "duels_lost": 5.3723,
                "aerial_won": 0.4572,
                "aerial_lost": 0.6651,
                "interceptions": 0.5456,
                "tackles_won": 0.7661,
                "tackles": 1.1403,
                "clearances": 0.4711,
                "total_contest": 2.1001,
                "won_contest": 0.5221,
                "challenges_lost": 0.9706,
                "fouls": 1.0751,
                "fouls_drawn": 1.9046,
                "blocks": 0.0467,
                "big_chances_created": 0.1812,
                "big_chances_missed": 0.1482,
                "xgot": 0.0984,
                "ball_carries": 14.4729,
                "total_progression": 84.7061,
                "progressive_carries": 3.2274,
                "shots_off_target": 1.1419
              },
              "params": {
                "blend_weight": 0.0065,
                "history_matches": 42,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8052,
                "prior_reliability": 0.0933,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 3.0137,
                  "after": 3.0277
                },
                {
                  "stat": "wasFouled",
                  "before": 1.8946,
                  "after": 1.9046
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.5997,
                "expected_assists": 0.1516,
                "assists": 0.1213,
                "assist_rate": 0.1213,
                "expected_goals": 0.1522,
                "goals": 0.1555,
                "goal_rate": 0.1555,
                "shots_on_target": 0.6577,
                "total_shots": 1.7996,
                "rating": 6.9355,
                "minutes": 72.47,
                "total_pass": 21.7637,
                "accurate_pass": 18.5284,
                "duels_won": 4.0141,
                "total_long_balls": 0.4957,
                "accurate_long_balls": 0.1896,
                "total_own_half_passes": 6.096,
                "accurate_own_half_passes": 5.2939,
                "total_opp_half_passes": 15.6678,
                "accurate_opp_half_passes": 13.2348,
                "crosses_total": 3.0277,
                "crosses_accurate": 0.7549,
                "touches": 41.12,
                "possession_lost": 11.5528,
                "dispossessed": 1.0876,
                "duels_lost": 5.3723,
                "aerial_won": 0.4572,
                "aerial_lost": 0.6651,
                "interceptions": 0.5456,
                "tackles_won": 0.7661,
                "tackles": 1.1403,
                "clearances": 0.4711,
                "total_contest": 2.1001,
                "won_contest": 0.5221,
                "challenges_lost": 0.9706,
                "fouls": 1.0751,
                "fouls_drawn": 1.9046,
                "blocks": 0.0467,
                "big_chances_created": 0.1812,
                "big_chances_missed": 0.1482,
                "xgot": 0.0984,
                "ball_carries": 14.4729,
                "total_progression": 84.7061,
                "progressive_carries": 3.2274,
                "shots_off_target": 1.1419
              },
              "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.5997,
                "expected_assists": 0.1516,
                "assists": 0.1213,
                "assist_rate": 0.1213,
                "expected_goals": 0.1438,
                "goals": 0.1469,
                "goal_rate": 0.1469,
                "shots_on_target": 0.6213,
                "total_shots": 1.6999,
                "rating": 6.9355,
                "minutes": 72.47,
                "total_pass": 21.7637,
                "accurate_pass": 18.5284,
                "duels_won": 4.0141,
                "total_long_balls": 0.4957,
                "accurate_long_balls": 0.1896,
                "total_own_half_passes": 6.096,
                "accurate_own_half_passes": 5.2939,
                "total_opp_half_passes": 15.6678,
                "accurate_opp_half_passes": 13.2348,
                "crosses_total": 3.0277,
                "crosses_accurate": 0.7549,
                "touches": 41.12,
                "possession_lost": 11.5528,
                "dispossessed": 1.0876,
                "duels_lost": 5.3723,
                "aerial_won": 1.1,
                "aerial_lost": 0.6651,
                "interceptions": 0.5456,
                "tackles_won": 0.7661,
                "tackles": 1.1403,
                "clearances": 0.4711,
                "total_contest": 2.1001,
                "won_contest": 0.5221,
                "challenges_lost": 0.9706,
                "fouls": 1.0751,
                "fouls_drawn": 1.9046,
                "blocks": 0.0467,
                "big_chances_created": 0.1812,
                "big_chances_missed": 0.14,
                "xgot": 0.0929,
                "ball_carries": 14.4729,
                "total_progression": 84.7061,
                "progressive_carries": 3.2274,
                "shots_off_target": 1.0786,
                "duel_xg_multiplier": 0.9446,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.422,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar El Hilali",
                "opponent_faced": "Omar El Hilali",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Omar El Hilali",
                  "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                  "duel_win_rate": 0.422,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9446,
                  "skill_edge": -0.0377,
                  "height_edge": 0.0,
                  "attacker_skill": 0.5731,
                  "defender_skill": 0.6569,
                  "attacker_role": "LM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Omar El Hilali",
                      "market_value": 15900000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.6569
                    }
                  ],
                  "xg_override": 0.1438
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.4572,
                  "after": 1.1
                },
                {
                  "stat": "totalShots",
                  "before": 1.7996,
                  "after": 1.6999
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.1419,
                  "after": 1.0786
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6577,
                  "after": 0.6213
                },
                {
                  "stat": "goals",
                  "before": 0.1555,
                  "after": 0.1469
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1522,
                  "after": 0.1438
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1482,
                  "after": 0.14
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0984,
                  "after": 0.0929
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 1.5997,
                "expected_assists": 0.1516,
                "assist_rate": 0.1213,
                "assists": 0,
                "expected_goals": 0.1438,
                "goal_rate": 0.1469,
                "goals": 0,
                "shots_on_target": 0.6213,
                "total_shots": 1.6999,
                "rating": 6.9355,
                "minutes": 72.47,
                "total_pass": 21.7637,
                "accurate_pass": 18.5284,
                "duels_won": 4.0141,
                "total_long_balls": 0.4957,
                "accurate_long_balls": 0.1896,
                "total_own_half_passes": 6.096,
                "accurate_own_half_passes": 5.2939,
                "total_opp_half_passes": 15.6678,
                "accurate_opp_half_passes": 13.2348,
                "crosses_total": 3.0277,
                "crosses_accurate": 0.7549,
                "touches": 41.12,
                "possession_lost": 11.5528,
                "dispossessed": 1.0876,
                "duels_lost": 5.3723,
                "aerial_won": 1.1,
                "aerial_lost": 0.6651,
                "interceptions": 0.5456,
                "tackles_won": 0.7661,
                "tackles": 1.1403,
                "clearances": 0.4711,
                "total_contest": 2.1001,
                "won_contest": 0.5221,
                "challenges_lost": 0.9706,
                "fouls": 1.0751,
                "fouls_drawn": 1.9046,
                "blocks": 0.0467,
                "big_chances_created": 0.1812,
                "big_chances_missed": 0.14,
                "xgot": 0.0929,
                "ball_carries": 14.4729,
                "total_progression": 84.7061,
                "progressive_carries": 3.2274,
                "shots_off_target": 1.0786,
                "duel_xg_multiplier": 0.9446,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.422,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar El Hilali",
                "opponent_faced": "Omar El Hilali",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "key_pass": 1.5997,
                "expected_assists": 0.191,
                "assist_rate": 0.1213,
                "assists": 0,
                "expected_goals": 0.1812,
                "goal_rate": 0.1469,
                "goals": 0,
                "shots_on_target": 0.6213,
                "total_shots": 1.6999,
                "rating": 6.9355,
                "minutes": 72.47,
                "total_pass": 21.7637,
                "accurate_pass": 18.5284,
                "duels_won": 4.0141,
                "total_long_balls": 0.4957,
                "accurate_long_balls": 0.1896,
                "total_own_half_passes": 6.096,
                "accurate_own_half_passes": 5.2939,
                "total_opp_half_passes": 15.6678,
                "accurate_opp_half_passes": 13.2348,
                "crosses_total": 3.0277,
                "crosses_accurate": 0.7549,
                "touches": 41.12,
                "possession_lost": 11.5528,
                "dispossessed": 1.0876,
                "duels_lost": 5.3723,
                "aerial_won": 1.1,
                "aerial_lost": 0.6651,
                "interceptions": 0.5456,
                "tackles_won": 0.7661,
                "tackles": 1.1403,
                "clearances": 0.4711,
                "total_contest": 2.1001,
                "won_contest": 0.5221,
                "challenges_lost": 0.9706,
                "fouls": 1.0751,
                "fouls_drawn": 1.9046,
                "blocks": 0.0467,
                "big_chances_created": 0.1812,
                "big_chances_missed": 0.14,
                "xgot": 0.1171,
                "ball_carries": 14.4729,
                "total_progression": 84.7061,
                "progressive_carries": 3.2274,
                "shots_off_target": 1.0786,
                "duel_xg_multiplier": 0.9446,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.422,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar El Hilali",
                "opponent_faced": "Omar El Hilali",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.016,
                "creation_factor": 0.8497
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1438,
                  "after": 0.1812
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1516,
                  "after": 0.191
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 76.0)",
              "stats": {
                "key_pass": 1.5997,
                "expected_assists": 0.191,
                "assist_rate": 0.1213,
                "assists": 0,
                "expected_goals": 0.1812,
                "goal_rate": 0.1469,
                "goals": 0,
                "shots_on_target": 0.6213,
                "total_shots": 1.6999,
                "rating": 6.9355,
                "minutes": 72.47,
                "total_pass": 21.7637,
                "accurate_pass": 18.5284,
                "duels_won": 4.0141,
                "total_long_balls": 0.4957,
                "accurate_long_balls": 0.1896,
                "total_own_half_passes": 6.096,
                "accurate_own_half_passes": 5.2939,
                "total_opp_half_passes": 15.6678,
                "accurate_opp_half_passes": 13.2348,
                "crosses_total": 3.0277,
                "crosses_accurate": 0.7549,
                "touches": 41.12,
                "possession_lost": 11.5528,
                "dispossessed": 1.0876,
                "duels_lost": 5.3723,
                "aerial_won": 1.1,
                "aerial_lost": 0.6651,
                "interceptions": 0.5456,
                "tackles_won": 0.7661,
                "tackles": 1.1403,
                "clearances": 0.4711,
                "total_contest": 2.1001,
                "won_contest": 0.5221,
                "challenges_lost": 0.9706,
                "fouls": 1.0751,
                "fouls_drawn": 1.9046,
                "blocks": 0.0467,
                "big_chances_created": 0.1812,
                "big_chances_missed": 0.14,
                "xgot": 0.1171,
                "ball_carries": 14.4729,
                "total_progression": 84.7061,
                "progressive_carries": 3.2274,
                "shots_off_target": 1.0786,
                "duel_xg_multiplier": 0.9446,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.422,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar El Hilali",
                "opponent_faced": "Omar El Hilali",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.016,
                "creation_factor": 0.8497,
                "fifa_overall": 76.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": 3318,
                "fifa_rank": 1967.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 1.5997,
                "expected_assists": 0.191,
                "assist_rate": 0.1213,
                "assists": 0,
                "expected_goals": 0.1812,
                "goal_rate": 0.1469,
                "goals": 0,
                "shots_on_target": 0.6213,
                "total_shots": 1.6999,
                "rating": 6.9355,
                "minutes": 72.47,
                "total_pass": 21.7637,
                "accurate_pass": 18.5284,
                "duels_won": 4.0141,
                "total_long_balls": 0.4957,
                "accurate_long_balls": 0.1896,
                "total_own_half_passes": 6.096,
                "accurate_own_half_passes": 5.2939,
                "total_opp_half_passes": 15.6678,
                "accurate_opp_half_passes": 13.2348,
                "crosses_total": 3.0277,
                "crosses_accurate": 0.7549,
                "touches": 41.12,
                "possession_lost": 11.5528,
                "dispossessed": 1.0876,
                "duels_lost": 5.3723,
                "aerial_won": 1.1,
                "aerial_lost": 0.6651,
                "interceptions": 0.5456,
                "tackles_won": 0.7661,
                "tackles": 1.1403,
                "clearances": 0.4711,
                "total_contest": 2.1001,
                "won_contest": 0.5221,
                "challenges_lost": 0.9706,
                "fouls": 1.0751,
                "fouls_drawn": 1.9046,
                "blocks": 0.0467,
                "big_chances_created": 0.1812,
                "big_chances_missed": 0.14,
                "xgot": 0.1171,
                "ball_carries": 14.4729,
                "total_progression": 84.7061,
                "progressive_carries": 3.2274,
                "shots_off_target": 1.0786,
                "duel_xg_multiplier": 0.9446,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.422,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar El Hilali",
                "opponent_faced": "Omar El Hilali",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1657,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.016,
                "creation_factor": 0.8497,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.1657,
                "goal_rate": 0.1469,
                "scorer_weight": 0.1841,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0937,
                "finishing_factor": 1.016,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.5997,
                "expected_assists": 0.191,
                "assist_rate": 0.1213,
                "assists": 0,
                "expected_goals": 0.1812,
                "goal_rate": 0.1469,
                "goals": 0,
                "shots_on_target": 0.6213,
                "total_shots": 1.6999,
                "rating": 6.9355,
                "minutes": 72.47,
                "total_pass": 21.7637,
                "accurate_pass": 18.5284,
                "duels_won": 4.0141,
                "total_long_balls": 0.4957,
                "accurate_long_balls": 0.1896,
                "total_own_half_passes": 6.096,
                "accurate_own_half_passes": 5.2939,
                "total_opp_half_passes": 15.6678,
                "accurate_opp_half_passes": 13.2348,
                "crosses_total": 3.0277,
                "crosses_accurate": 0.7549,
                "touches": 41.12,
                "possession_lost": 11.5528,
                "dispossessed": 1.0876,
                "duels_lost": 5.3723,
                "aerial_won": 1.1,
                "aerial_lost": 0.6651,
                "interceptions": 0.5456,
                "tackles_won": 0.7661,
                "tackles": 1.1403,
                "clearances": 0.4711,
                "total_contest": 2.1001,
                "won_contest": 0.5221,
                "challenges_lost": 0.9706,
                "fouls": 1.0751,
                "fouls_drawn": 1.9046,
                "blocks": 0.0467,
                "big_chances_created": 0.1812,
                "big_chances_missed": 0.14,
                "xgot": 0.1171,
                "ball_carries": 14.4729,
                "total_progression": 84.7061,
                "progressive_carries": 3.2274,
                "shots_off_target": 1.0786,
                "duel_xg_multiplier": 0.9446,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.422,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar El Hilali",
                "opponent_faced": "Omar El Hilali",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1657,
                "projected_assists": 0,
                "assist_probability": 0.1739,
                "finishing_factor": 1.016,
                "creation_factor": 0.8497,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1739,
                "assist_rate": 0.1213,
                "provider_weight": 0.1623,
                "squad_weight_total": 1.3182,
                "weight_share": 0.1231,
                "creation_factor": 0.8497,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Sergi Cardona": {
          "player_id": 986245,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 23,
          "height": 186,
          "market_value": 8600000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.8223,
            "minutes": 86,
            "total_pass": 44,
            "accurate_pass": 38,
            "duels_won": 4,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 20,
            "accurate_own_half_passes": 19,
            "total_opp_half_passes": 24,
            "accurate_opp_half_passes": 19,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 69,
            "possession_lost": 12.8862,
            "dispossessed": 0.3439,
            "duels_lost": 4,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0491,
            "goals": 0,
            "assist_rate": 0.0095,
            "assists": 0,
            "expected_goals": 0.0323,
            "expected_assists": 0.1566,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0195,
            "ball_carries": 16,
            "total_progression": 78,
            "progressive_carries": 2,
            "key_pass": 1,
            "shots_off_target": 0,
            "opponent_faced": "Roberto Fernández",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0318,
            "projected_assists": 0,
            "assist_probability": 0.145,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 25,
                "rating": 7.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.2264,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 18,
                "accurate_pass": 14,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 3,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2749,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 42,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 67,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0064,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 25,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.015,
                "expected_assists": 0.3181,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 62,
                "accurate_pass": 52,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0525,
                "expected_assists": 0.0406,
                "total_shots": 2,
                "total_pass": 79,
                "accurate_pass": 72,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0381,
                "total_shots": 0,
                "total_pass": 59,
                "accurate_pass": 52,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 23,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0146,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "clearances": 2,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.043,
                "expected_assists": 0.0321,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 40,
                "accurate_pass": 38,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083573,
              "match_date": "2026-05-10",
              "home_team": "Mallorca",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0138,
                "expected_assists": 0.007,
                "total_shots": 1,
                "total_pass": 38,
                "accurate_pass": 31,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083512,
              "match_date": "2026-05-02",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 17,
                "rating": 7.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0041,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 11,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2148,
            "combined_rank_score": 810.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 653.0,
            "sofascore_rating": 6.7387,
            "sofascore_appearances": 31.0,
            "fifa_rank": 967.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8223,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sergi Cardona",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Álvaro Valles",
                  "ranking": 2143
                },
                {
                  "player_name": "Lazar Samardžić",
                  "ranking": 2144
                },
                {
                  "player_name": "Giovanny Avalos",
                  "ranking": 2145
                },
                {
                  "player_name": "Nahuel Tenaglia",
                  "ranking": 2146
                },
                {
                  "player_name": "Breel Embolo",
                  "ranking": 2147
                }
              ],
              "lower": [
                {
                  "player_name": "Kim Geon-oh",
                  "ranking": 2149
                },
                {
                  "player_name": "Ben Chilwell",
                  "ranking": 2150
                },
                {
                  "player_name": "Nicholas Duarte",
                  "ranking": 2151
                },
                {
                  "player_name": "Edem Nemanov",
                  "ranking": 2152
                },
                {
                  "player_name": "Samú Costa",
                  "ranking": 2153
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 37,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 37,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "XGBoost regressor (D_service) evaluated 37 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.00, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.019,
                "tackles": 1.9668,
                "tackles_won": 1.1677,
                "clearances": 1.9981,
                "aerial_won": 0.7369,
                "total_shots": 0.6095,
                "rating": 6.8223,
                "minutes": 85.9,
                "total_pass": 44.356,
                "accurate_pass": 37.7205,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.3822,
                "accurate_own_half_passes": 18.9648,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 68.9086,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.0256,
                "expected_assists": 0.1243,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0155,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4685
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.1504,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Mallorca",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Levante UD",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.5693,
                  "aerialWon": 0.7345,
                  "totalClearance_p90": 2.3089,
                  "totalTackle": 1.785,
                  "totalPass": 36.9142
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0190216302871704,
                    "model_output": 1.019,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1195
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0248
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0181
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.014
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0113
                        }
                      ],
                      "others": 0.0486,
                      "total": 1.019,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.128878
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.025467
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.018972
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.014736
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.011713
                        }
                      ],
                      "others_margin": 0.048923
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.9668161869049072,
                    "model_output": 1.9668,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1877
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.1004
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1066
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0472
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0479
                        }
                      ],
                      "others": 0.0913,
                      "total": 1.9668,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127049
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.061838
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.061749
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.026151
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.025883
                        }
                      ],
                      "others_margin": 0.04756
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.1677194833755493,
                    "model_output": 1.1677,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1055
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0614
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0496
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0356
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0325
                        }
                      ],
                      "others": 0.0374,
                      "total": 1.1677,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.117597
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.062575
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.047778
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.032944
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.029203
                        }
                      ],
                      "others_margin": 0.032541
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.9981238842010498,
                    "model_output": 1.9981,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.7768
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3521
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2978
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2367
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.069
                        }
                      ],
                      "others": -0.4054,
                      "total": 1.9981,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.256658
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124534
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.104295
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.091421
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.028301
                        }
                      ],
                      "others_margin": -0.184712
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7369232177734375,
                    "model_output": 0.7369,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.4086
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1163
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1101
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0824
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0549
                        }
                      ],
                      "others": -0.0886,
                      "total": 0.7369,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.351787
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.127857
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.121417
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.08942
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.064391
                        }
                      ],
                      "others_margin": -0.113591
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6094995737075806,
                    "model_output": 0.6095,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0627
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0308
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.011
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.01
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0096
                        }
                      ],
                      "others": 0.0069,
                      "total": 0.6095,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.062729
                        },
                        {
                          "name": "rating",
                          "margin": 0.030791
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.010986
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.010013
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.009571
                        }
                      ],
                      "others_margin": 0.00687
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.822251319885254,
                    "model_output": 6.8223,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "touches_p90",
                          "contribution": 0.0415
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0177
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0141
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0134
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": -0.0085
                        }
                      ],
                      "others": 0.0036,
                      "total": 6.8223,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": 0.041524
                        },
                        {
                          "name": "rating",
                          "margin": 0.017698
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.014075
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013443
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": -0.008515
                        }
                      ],
                      "others_margin": 0.003547
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 37,
                  "role_matches": 25,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0000, quality 0.506)",
              "stats": {
                "interceptions": 1.019,
                "tackles": 1.9668,
                "tackles_won": 1.1677,
                "clearances": 1.9981,
                "aerial_won": 0.7369,
                "total_shots": 0.6095,
                "rating": 6.8223,
                "minutes": 85.9,
                "total_pass": 44.356,
                "accurate_pass": 37.7205,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.3822,
                "accurate_own_half_passes": 18.9648,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 68.9086,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.0256,
                "expected_assists": 0.1243,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0155,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4685
              },
              "params": {
                "market_value_eur": 8600000,
                "quality_factor": 0.5059,
                "boost_factor": 1.0,
                "reference_quality": 0.505,
                "history_matches": 37,
                "history_shrink": 0.119,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.019,
                "tackles": 1.9668,
                "tackles_won": 1.1677,
                "clearances": 1.9981,
                "aerial_won": 0.7369,
                "total_shots": 0.6095,
                "rating": 6.8223,
                "minutes": 85.9,
                "total_pass": 44.356,
                "accurate_pass": 37.7205,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.3822,
                "accurate_own_half_passes": 18.9648,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 68.9086,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.0256,
                "expected_assists": 0.1243,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0155,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4685
              },
              "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.019,
                "tackles": 1.9668,
                "tackles_won": 1.1677,
                "clearances": 1.9981,
                "aerial_won": 0.7369,
                "total_shots": 0.6095,
                "rating": 6.8223,
                "minutes": 85.9,
                "total_pass": 44.356,
                "accurate_pass": 37.7205,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.3822,
                "accurate_own_half_passes": 18.9648,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 68.9086,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.0256,
                "expected_assists": 0.1243,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0155,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4685,
                "opponent_faced": "Roberto Fernández",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Roberto Fernández",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.019,
                "tackles": 1.9668,
                "tackles_won": 1.1677,
                "clearances": 1.9981,
                "aerial_won": 0.7369,
                "total_shots": 0.6095,
                "rating": 6.8223,
                "minutes": 85.9,
                "total_pass": 44.356,
                "accurate_pass": 37.7205,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.3822,
                "accurate_own_half_passes": 18.9648,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 68.9086,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.0256,
                "expected_assists": 0.1243,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0155,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4685,
                "opponent_faced": "Roberto Fernández",
                "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": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "interceptions": 1.019,
                "tackles": 1.9668,
                "tackles_won": 1.1677,
                "clearances": 1.9981,
                "aerial_won": 0.7369,
                "total_shots": 0.6095,
                "rating": 6.8223,
                "minutes": 85.9,
                "total_pass": 44.356,
                "accurate_pass": 37.7205,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.3822,
                "accurate_own_half_passes": 18.9648,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 68.9086,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.0323,
                "expected_assists": 0.1566,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0195,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4685,
                "opponent_faced": "Roberto Fernández",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0256,
                  "after": 0.0323
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1243,
                  "after": 0.1566
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 79.0)",
              "stats": {
                "interceptions": 1.019,
                "tackles": 1.9668,
                "tackles_won": 1.1677,
                "clearances": 1.9981,
                "aerial_won": 0.7369,
                "total_shots": 0.6095,
                "rating": 6.8223,
                "minutes": 85.9,
                "total_pass": 44.356,
                "accurate_pass": 37.7205,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.3822,
                "accurate_own_half_passes": 18.9648,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 68.9086,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.0323,
                "expected_assists": 0.1566,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0195,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4685,
                "opponent_faced": "Roberto Fernández",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 79.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": 2148,
                "fifa_rank": 967.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.019,
                "tackles": 1.9668,
                "tackles_won": 1.1677,
                "clearances": 1.9981,
                "aerial_won": 0.7369,
                "total_shots": 0.6095,
                "rating": 6.8223,
                "minutes": 85.9,
                "total_pass": 44.356,
                "accurate_pass": 37.7205,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.3822,
                "accurate_own_half_passes": 18.9648,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 68.9086,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.0323,
                "expected_assists": 0.1566,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0195,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4685,
                "opponent_faced": "Roberto Fernández",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0318,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0318,
                "goal_rate": 0.0491,
                "scorer_weight": 0.0404,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0205,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.019,
                "tackles": 1.9668,
                "tackles_won": 1.1677,
                "clearances": 1.9981,
                "aerial_won": 0.7369,
                "total_shots": 0.6095,
                "rating": 6.8223,
                "minutes": 85.9,
                "total_pass": 44.356,
                "accurate_pass": 37.7205,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.3822,
                "accurate_own_half_passes": 18.9648,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 68.9086,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.0323,
                "expected_assists": 0.1566,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0195,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4685,
                "opponent_faced": "Roberto Fernández",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0318,
                "projected_assists": 0,
                "assist_probability": 0.145,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.145,
                "assist_rate": 0.0095,
                "provider_weight": 0.1253,
                "squad_weight_total": 1.3182,
                "weight_share": 0.095,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Renato Veiga": {
          "player_id": 1087359,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 12,
          "height": 190,
          "market_value": 29000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 7.0439,
            "minutes": 90,
            "total_pass": 80,
            "accurate_pass": 73,
            "duels_won": 2,
            "total_long_balls": 10,
            "accurate_long_balls": 5,
            "total_own_half_passes": 49,
            "accurate_own_half_passes": 47,
            "total_opp_half_passes": 31,
            "accurate_opp_half_passes": 25,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 92,
            "possession_lost": 8.7759,
            "dispossessed": 0.1575,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0779,
            "assists": 0,
            "expected_goals": 0.0199,
            "expected_assists": 0.0982,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0003,
            "ball_carries": 30,
            "total_progression": 121,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 1,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Roberto Fernández",
            "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.0197,
            "projected_assists": 0,
            "assist_probability": 0.0935,
            "finishing_factor": 0.8,
            "creation_factor": 1.0,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0127,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 85,
                "accurate_pass": 75,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 0,
                "duels_won": 1,
                "ball_recovery": 6,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0299,
                "expected_assists": 0.0139,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 68,
                "accurate_pass": 56,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2275,
                "total_shots": 0,
                "total_pass": 110,
                "accurate_pass": 106,
                "key_pass": 1,
                "clearances": 5,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0176,
                "expected_assists": 0.0731,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 92,
                "accurate_pass": 82,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.3191,
                "total_shots": 0,
                "total_pass": 91,
                "accurate_pass": 84,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0209,
                "total_shots": 0,
                "total_pass": 78,
                "accurate_pass": 74,
                "interceptions": 3,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1297,
                "expected_assists": 0.0324,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 92,
                "accurate_pass": 84,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0087,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 52,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2498,
                "total_shots": 0,
                "total_pass": 80,
                "accurate_pass": 76,
                "interceptions": 2,
                "clearances": 9,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083644,
              "match_date": "2026-05-13",
              "home_team": "Villarreal",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0324,
                "total_shots": 0,
                "total_pass": 88,
                "accurate_pass": 81,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2081,
            "combined_rank_score": 791.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1247.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0439,
            "source_file": "data/player_rankings.csv",
            "player_name": "Renato Veiga",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Chan-dong Lee",
                  "ranking": 2076
                },
                {
                  "player_name": "Leonardo Spinazzola",
                  "ranking": 2077
                },
                {
                  "player_name": "Toni Martínez",
                  "ranking": 2078
                },
                {
                  "player_name": "Callum Hudson Odoi",
                  "ranking": 2079
                },
                {
                  "player_name": "Cédric Bakambu",
                  "ranking": 2080
                }
              ],
              "lower": [
                {
                  "player_name": "Shodiyor Shodiboev",
                  "ranking": 2082
                },
                {
                  "player_name": "Matija Rom",
                  "ranking": 2083
                },
                {
                  "player_name": "Franco Rami",
                  "ranking": 2084
                },
                {
                  "player_name": "Jon Aramburu",
                  "ranking": 2085
                },
                {
                  "player_name": "Nikita Haikin",
                  "ranking": 2086
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0067,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 270.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.67,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (D_service) evaluated 41 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.20, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.1362,
                "tackles": 0.944,
                "tackles_won": 0.5621,
                "clearances": 4.7726,
                "aerial_won": 1.3187,
                "total_shots": 0.5502,
                "rating": 7.0439,
                "minutes": 89.88,
                "total_pass": 79.571,
                "accurate_pass": 72.036,
                "duels_won": 1.9464,
                "total_long_balls": 9.8037,
                "accurate_long_balls": 4.7182,
                "total_own_half_passes": 49.0884,
                "accurate_own_half_passes": 47.1203,
                "total_opp_half_passes": 30.4825,
                "accurate_opp_half_passes": 24.9156,
                "crosses_total": 0.0598,
                "crosses_accurate": 0.0,
                "touches": 91.3188,
                "possession_lost": 8.7175,
                "dispossessed": 0.1565,
                "duels_lost": 1.9399,
                "aerial_lost": 0.6078,
                "total_contest": 0.4101,
                "won_contest": 0.2933,
                "ball_recovery": 3.8212,
                "challenges_lost": 0.369,
                "fouls": 0.7697,
                "fouls_drawn": 0.1094,
                "blocks": 1.1954,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0785,
                "assist_rate": 0.0785,
                "expected_goals": 0.0157,
                "expected_assists": 0.0774,
                "shots_on_target": 0.0064,
                "big_chances_created": 0.0812,
                "xgot": 0.0002,
                "ball_carries": 29.371,
                "total_progression": 120.1638,
                "progressive_carries": 0.964,
                "key_pass": 0.3048,
                "shots_off_target": 0.5438
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.1038,
                  "aerialWon": 1.0816,
                  "totalClearance_p90": 5.2927,
                  "totalTackle": 0.4343,
                  "totalPass": 78.7052
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1362262964248657,
                    "model_output": 1.1362,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1203
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0657
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0371
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0239
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0225
                        }
                      ],
                      "others": -0.0018,
                      "total": 1.1362,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129715
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.064359
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.034532
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.02163
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.019947
                        }
                      ],
                      "others_margin": -0.001503
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.9440398216247559,
                    "model_output": 0.944,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.162
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1491
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.1332
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0755
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0491
                        }
                      ],
                      "others": -0.171,
                      "total": 0.944,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.124319
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.114991
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.102098
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.062834
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.043059
                        }
                      ],
                      "others_margin": -0.166455
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.5620960593223572,
                    "model_output": 0.5621,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1232
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0864
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0799
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0342
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0254
                        }
                      ],
                      "others": -0.1073,
                      "total": 0.5621,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.157509
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.112966
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.104031
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.048009
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.037288
                        }
                      ],
                      "others_margin": -0.174626
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.772589683532715,
                    "model_output": 4.7726,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.5053
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4646
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.3908
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2583
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2627
                        }
                      ],
                      "others": -0.5408,
                      "total": 4.7726,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.137372
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.111547
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.085053
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.052495
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.050714
                        }
                      ],
                      "others_margin": -0.107354
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.3187494277954102,
                    "model_output": 1.3187,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.2335
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1263
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.078
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.066
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0484
                        }
                      ],
                      "others": 0.012,
                      "total": 1.3188,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.185728
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.104728
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.063335
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.053873
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.037768
                        }
                      ],
                      "others_margin": 0.009021
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5501950979232788,
                    "model_output": 0.5502,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0577
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0263
                        },
                        {
                          "name": "touches",
                          "contribution": -0.021
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0187
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0184
                        }
                      ],
                      "others": -0.0284,
                      "total": 0.5502,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.057743
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.026309
                        },
                        {
                          "name": "touches",
                          "margin": -0.021014
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.018684
                        },
                        {
                          "name": "rating",
                          "margin": 0.01839
                        }
                      ],
                      "others_margin": -0.028456
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.04391622543335,
                    "model_output": 7.0439,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0859
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0734
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0486
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0244
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0185
                        }
                      ],
                      "others": -0.0024,
                      "total": 7.0439,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.085887
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.073382
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.048604
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.024384
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.018548
                        }
                      ],
                      "others_margin": -0.002404
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 41,
                  "role_matches": 36,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0067, quality 0.710)",
              "stats": {
                "interceptions": 1.1438,
                "tackles": 0.9504,
                "tackles_won": 0.5659,
                "clearances": 4.8046,
                "aerial_won": 1.3276,
                "total_shots": 0.5539,
                "rating": 7.0439,
                "minutes": 89.88,
                "total_pass": 80.1041,
                "accurate_pass": 72.5186,
                "duels_won": 1.9594,
                "total_long_balls": 9.8694,
                "accurate_long_balls": 4.7498,
                "total_own_half_passes": 49.4173,
                "accurate_own_half_passes": 47.436,
                "total_opp_half_passes": 30.6867,
                "accurate_opp_half_passes": 25.0825,
                "crosses_total": 0.0602,
                "crosses_accurate": 0.0,
                "touches": 91.9306,
                "possession_lost": 8.7759,
                "dispossessed": 0.1575,
                "duels_lost": 1.9529,
                "aerial_lost": 0.6119,
                "total_contest": 0.4128,
                "won_contest": 0.2953,
                "ball_recovery": 3.8468,
                "challenges_lost": 0.3715,
                "fouls": 0.7749,
                "fouls_drawn": 0.1101,
                "blocks": 1.2034,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.079,
                "assist_rate": 0.079,
                "expected_goals": 0.0158,
                "expected_assists": 0.0779,
                "shots_on_target": 0.0064,
                "big_chances_created": 0.0817,
                "xgot": 0.0002,
                "ball_carries": 29.5678,
                "total_progression": 120.9689,
                "progressive_carries": 0.9705,
                "key_pass": 0.3068,
                "shots_off_target": 0.5474
              },
              "params": {
                "market_value_eur": 29000000,
                "quality_factor": 0.71,
                "boost_factor": 1.0067,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0141)",
              "stats": {
                "interceptions": 1.1465,
                "tackles": 0.9504,
                "tackles_won": 0.5579,
                "clearances": 4.8046,
                "aerial_won": 1.3276,
                "total_shots": 0.5555,
                "rating": 7.0439,
                "minutes": 89.88,
                "total_pass": 80.1041,
                "accurate_pass": 72.5186,
                "duels_won": 1.9594,
                "total_long_balls": 9.8694,
                "accurate_long_balls": 4.7498,
                "total_own_half_passes": 49.4173,
                "accurate_own_half_passes": 47.436,
                "total_opp_half_passes": 30.6867,
                "accurate_opp_half_passes": 25.0825,
                "crosses_total": 0.0641,
                "crosses_accurate": 0.0,
                "touches": 91.9306,
                "possession_lost": 8.7759,
                "dispossessed": 0.1575,
                "duels_lost": 1.9529,
                "aerial_lost": 0.6119,
                "total_contest": 0.4128,
                "won_contest": 0.2953,
                "ball_recovery": 3.8468,
                "challenges_lost": 0.3715,
                "fouls": 0.7781,
                "fouls_drawn": 0.1132,
                "blocks": 1.2034,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0779,
                "assist_rate": 0.0779,
                "expected_goals": 0.0158,
                "expected_assists": 0.0779,
                "shots_on_target": 0.0063,
                "big_chances_created": 0.0817,
                "xgot": 0.0002,
                "ball_carries": 29.5678,
                "total_progression": 120.9689,
                "progressive_carries": 0.9705,
                "key_pass": 0.3068,
                "shots_off_target": 0.5474
              },
              "params": {
                "blend_weight": 0.0141,
                "history_matches": 41,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9987,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.5659,
                  "after": 0.5579
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1465,
                "tackles": 0.9504,
                "tackles_won": 0.5579,
                "clearances": 4.8046,
                "aerial_won": 1.3276,
                "total_shots": 0.5555,
                "rating": 7.0439,
                "minutes": 89.88,
                "total_pass": 80.1041,
                "accurate_pass": 72.5186,
                "duels_won": 1.9594,
                "total_long_balls": 9.8694,
                "accurate_long_balls": 4.7498,
                "total_own_half_passes": 49.4173,
                "accurate_own_half_passes": 47.436,
                "total_opp_half_passes": 30.6867,
                "accurate_opp_half_passes": 25.0825,
                "crosses_total": 0.0641,
                "crosses_accurate": 0.0,
                "touches": 91.9306,
                "possession_lost": 8.7759,
                "dispossessed": 0.1575,
                "duels_lost": 1.9529,
                "aerial_lost": 0.6119,
                "total_contest": 0.4128,
                "won_contest": 0.2953,
                "ball_recovery": 3.8468,
                "challenges_lost": 0.3715,
                "fouls": 0.7781,
                "fouls_drawn": 0.1132,
                "blocks": 1.2034,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0779,
                "assist_rate": 0.0779,
                "expected_goals": 0.0158,
                "expected_assists": 0.0779,
                "shots_on_target": 0.0063,
                "big_chances_created": 0.0817,
                "xgot": 0.0002,
                "ball_carries": 29.5678,
                "total_progression": 120.9689,
                "progressive_carries": 0.9705,
                "key_pass": 0.3068,
                "shots_off_target": 0.5474
              },
              "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.1465,
                "tackles": 0.9504,
                "tackles_won": 0.5579,
                "clearances": 4.8046,
                "aerial_won": 1.3276,
                "total_shots": 0.5555,
                "rating": 7.0439,
                "minutes": 89.88,
                "total_pass": 80.1041,
                "accurate_pass": 72.5186,
                "duels_won": 1.9594,
                "total_long_balls": 9.8694,
                "accurate_long_balls": 4.7498,
                "total_own_half_passes": 49.4173,
                "accurate_own_half_passes": 47.436,
                "total_opp_half_passes": 30.6867,
                "accurate_opp_half_passes": 25.0825,
                "crosses_total": 0.0641,
                "crosses_accurate": 0.0,
                "touches": 91.9306,
                "possession_lost": 8.7759,
                "dispossessed": 0.1575,
                "duels_lost": 1.9529,
                "aerial_lost": 0.6119,
                "total_contest": 0.4128,
                "won_contest": 0.2953,
                "ball_recovery": 3.8468,
                "challenges_lost": 0.3715,
                "fouls": 0.7781,
                "fouls_drawn": 0.1132,
                "blocks": 1.2034,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0779,
                "assist_rate": 0.0779,
                "expected_goals": 0.0158,
                "expected_assists": 0.0779,
                "shots_on_target": 0.0063,
                "big_chances_created": 0.0817,
                "xgot": 0.0002,
                "ball_carries": 29.5678,
                "total_progression": 120.9689,
                "progressive_carries": 0.9705,
                "key_pass": 0.3068,
                "shots_off_target": 0.5474,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "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": "Roberto Fernández",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1465,
                "tackles": 0.9504,
                "tackles_won": 0.5579,
                "clearances": 4.8046,
                "aerial_won": 1.3276,
                "total_shots": 0.5555,
                "rating": 7.0439,
                "minutes": 89.88,
                "total_pass": 80.1041,
                "accurate_pass": 72.5186,
                "duels_won": 1.9594,
                "total_long_balls": 9.8694,
                "accurate_long_balls": 4.7498,
                "total_own_half_passes": 49.4173,
                "accurate_own_half_passes": 47.436,
                "total_opp_half_passes": 30.6867,
                "accurate_opp_half_passes": 25.0825,
                "crosses_total": 0.0641,
                "crosses_accurate": 0.0,
                "touches": 91.9306,
                "possession_lost": 8.7759,
                "dispossessed": 0.1575,
                "duels_lost": 1.9529,
                "aerial_lost": 0.6119,
                "total_contest": 0.4128,
                "won_contest": 0.2953,
                "ball_recovery": 3.8468,
                "challenges_lost": 0.3715,
                "fouls": 0.7781,
                "fouls_drawn": 0.1132,
                "blocks": 1.2034,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0779,
                "assists": 0,
                "expected_goals": 0.0158,
                "expected_assists": 0.0779,
                "shots_on_target": 0.0063,
                "big_chances_created": 0.0817,
                "xgot": 0.0002,
                "ball_carries": 29.5678,
                "total_progression": 120.9689,
                "progressive_carries": 0.9705,
                "key_pass": 0.3068,
                "shots_off_target": 0.5474,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "interceptions": 1.1465,
                "tackles": 0.9504,
                "tackles_won": 0.5579,
                "clearances": 4.8046,
                "aerial_won": 1.3276,
                "total_shots": 0.5555,
                "rating": 7.0439,
                "minutes": 89.88,
                "total_pass": 80.1041,
                "accurate_pass": 72.5186,
                "duels_won": 1.9594,
                "total_long_balls": 9.8694,
                "accurate_long_balls": 4.7498,
                "total_own_half_passes": 49.4173,
                "accurate_own_half_passes": 47.436,
                "total_opp_half_passes": 30.6867,
                "accurate_opp_half_passes": 25.0825,
                "crosses_total": 0.0641,
                "crosses_accurate": 0.0,
                "touches": 91.9306,
                "possession_lost": 8.7759,
                "dispossessed": 0.1575,
                "duels_lost": 1.9529,
                "aerial_lost": 0.6119,
                "total_contest": 0.4128,
                "won_contest": 0.2953,
                "ball_recovery": 3.8468,
                "challenges_lost": 0.3715,
                "fouls": 0.7781,
                "fouls_drawn": 0.1132,
                "blocks": 1.2034,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0779,
                "assists": 0,
                "expected_goals": 0.0199,
                "expected_assists": 0.0982,
                "shots_on_target": 0.0063,
                "big_chances_created": 0.0817,
                "xgot": 0.0003,
                "ball_carries": 29.5678,
                "total_progression": 120.9689,
                "progressive_carries": 0.9705,
                "key_pass": 0.3068,
                "shots_off_target": 0.5474,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.0
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0779,
                  "after": 0.0982
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 78.0)",
              "stats": {
                "interceptions": 1.1465,
                "tackles": 0.9504,
                "tackles_won": 0.5579,
                "clearances": 4.8046,
                "aerial_won": 1.3276,
                "total_shots": 0.5555,
                "rating": 7.0439,
                "minutes": 89.88,
                "total_pass": 80.1041,
                "accurate_pass": 72.5186,
                "duels_won": 1.9594,
                "total_long_balls": 9.8694,
                "accurate_long_balls": 4.7498,
                "total_own_half_passes": 49.4173,
                "accurate_own_half_passes": 47.436,
                "total_opp_half_passes": 30.6867,
                "accurate_opp_half_passes": 25.0825,
                "crosses_total": 0.0641,
                "crosses_accurate": 0.0,
                "touches": 91.9306,
                "possession_lost": 8.7759,
                "dispossessed": 0.1575,
                "duels_lost": 1.9529,
                "aerial_lost": 0.6119,
                "total_contest": 0.4128,
                "won_contest": 0.2953,
                "ball_recovery": 3.8468,
                "challenges_lost": 0.3715,
                "fouls": 0.7781,
                "fouls_drawn": 0.1132,
                "blocks": 1.2034,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0779,
                "assists": 0,
                "expected_goals": 0.0199,
                "expected_assists": 0.0982,
                "shots_on_target": 0.0063,
                "big_chances_created": 0.0817,
                "xgot": 0.0003,
                "ball_carries": 29.5678,
                "total_progression": 120.9689,
                "progressive_carries": 0.9705,
                "key_pass": 0.3068,
                "shots_off_target": 0.5474,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.0,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2081,
                "fifa_rank": 1247.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.1465,
                "tackles": 0.9504,
                "tackles_won": 0.5579,
                "clearances": 4.8046,
                "aerial_won": 1.3276,
                "total_shots": 0.5555,
                "rating": 7.0439,
                "minutes": 89.88,
                "total_pass": 80.1041,
                "accurate_pass": 72.5186,
                "duels_won": 1.9594,
                "total_long_balls": 9.8694,
                "accurate_long_balls": 4.7498,
                "total_own_half_passes": 49.4173,
                "accurate_own_half_passes": 47.436,
                "total_opp_half_passes": 30.6867,
                "accurate_opp_half_passes": 25.0825,
                "crosses_total": 0.0641,
                "crosses_accurate": 0.0,
                "touches": 91.9306,
                "possession_lost": 8.7759,
                "dispossessed": 0.1575,
                "duels_lost": 1.9529,
                "aerial_lost": 0.6119,
                "total_contest": 0.4128,
                "won_contest": 0.2953,
                "ball_recovery": 3.8468,
                "challenges_lost": 0.3715,
                "fouls": 0.7781,
                "fouls_drawn": 0.1132,
                "blocks": 1.2034,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0779,
                "assists": 0,
                "expected_goals": 0.0199,
                "expected_assists": 0.0982,
                "shots_on_target": 0.0063,
                "big_chances_created": 0.0817,
                "xgot": 0.0003,
                "ball_carries": 29.5678,
                "total_progression": 120.9689,
                "progressive_carries": 0.9705,
                "key_pass": 0.3068,
                "shots_off_target": 0.5474,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "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.0197,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.0,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0197,
                "goal_rate": 0.0,
                "scorer_weight": 0.0159,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0081,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.1465,
                "tackles": 0.9504,
                "tackles_won": 0.5579,
                "clearances": 4.8046,
                "aerial_won": 1.3276,
                "total_shots": 0.5555,
                "rating": 7.0439,
                "minutes": 89.88,
                "total_pass": 80.1041,
                "accurate_pass": 72.5186,
                "duels_won": 1.9594,
                "total_long_balls": 9.8694,
                "accurate_long_balls": 4.7498,
                "total_own_half_passes": 49.4173,
                "accurate_own_half_passes": 47.436,
                "total_opp_half_passes": 30.6867,
                "accurate_opp_half_passes": 25.0825,
                "crosses_total": 0.0641,
                "crosses_accurate": 0.0,
                "touches": 91.9306,
                "possession_lost": 8.7759,
                "dispossessed": 0.1575,
                "duels_lost": 1.9529,
                "aerial_lost": 0.6119,
                "total_contest": 0.4128,
                "won_contest": 0.2953,
                "ball_recovery": 3.8468,
                "challenges_lost": 0.3715,
                "fouls": 0.7781,
                "fouls_drawn": 0.1132,
                "blocks": 1.2034,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0779,
                "assists": 0,
                "expected_goals": 0.0199,
                "expected_assists": 0.0982,
                "shots_on_target": 0.0063,
                "big_chances_created": 0.0817,
                "xgot": 0.0003,
                "ball_carries": 29.5678,
                "total_progression": 120.9689,
                "progressive_carries": 0.9705,
                "key_pass": 0.3068,
                "shots_off_target": 0.5474,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "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.0197,
                "projected_assists": 0,
                "assist_probability": 0.0935,
                "finishing_factor": 0.8,
                "creation_factor": 1.0,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0935,
                "assist_rate": 0.0779,
                "provider_weight": 0.0982,
                "squad_weight_total": 1.3182,
                "weight_share": 0.0745,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Juan Foyth": {
          "player_id": 873189,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 8,
          "height": 187,
          "market_value": 8600000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.9691,
            "minutes": 78,
            "total_pass": 58,
            "accurate_pass": 53,
            "duels_won": 3,
            "total_long_balls": 4,
            "accurate_long_balls": 3,
            "total_own_half_passes": 34,
            "accurate_own_half_passes": 33,
            "total_opp_half_passes": 24,
            "accurate_opp_half_passes": 21,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 69,
            "possession_lost": 5.6452,
            "dispossessed": 0.4599,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0421,
            "expected_assists": 0.0493,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0021,
            "ball_carries": 19,
            "total_progression": 78,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 2.0,
            "tackles_won_in_zone": 1.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.61,
            "opponent_faced": "Edu Expósito",
            "pressing_zone": "Left Wing vs Right Back — Flank Battle",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0412,
            "projected_assists": 0,
            "assist_probability": 0.0481,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 65,
                "rating": 6.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0182,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 52,
                "accurate_pass": 49,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 1,
                "ball_recovery": 3,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0121,
                "total_shots": 0,
                "total_pass": 80,
                "accurate_pass": 73,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 56,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0116,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 35,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3212,
                "expected_assists": 0.0206,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 88,
                "accurate_pass": 83,
                "tackles": 5,
                "tackles_won": 4,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 4,
                "duels_won": 11,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2948,
                "total_shots": 0,
                "total_pass": 68,
                "accurate_pass": 62,
                "key_pass": 1,
                "interceptions": 3,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0313,
                "total_shots": 0,
                "total_pass": 75,
                "accurate_pass": 68,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083186,
              "match_date": "2026-01-24",
              "home_team": "Villarreal",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 12,
                "clearances": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083224,
              "match_date": "2026-01-17",
              "home_team": "Real Betis",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.005,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 33,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "duels_won": 2,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083214,
              "match_date": "2026-01-10",
              "home_team": "Villarreal",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0154,
                "total_shots": 0,
                "total_pass": 63,
                "accurate_pass": 54,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 4,
                "duels_won": 8,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083198,
              "match_date": "2026-01-03",
              "home_team": "Elche",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 10,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "clearances": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1291,
            "combined_rank_score": 559.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 1.0,
            "fifa_rank": 962.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9691,
            "source_file": "data/player_rankings.csv",
            "player_name": "Juan Foyth",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mario Hermoso",
                  "ranking": 1286
                },
                {
                  "player_name": "Giovani Lo Celso",
                  "ranking": 1287
                },
                {
                  "player_name": "Lucas Torreira",
                  "ranking": 1288
                },
                {
                  "player_name": "Diego Ulloa",
                  "ranking": 1289
                },
                {
                  "player_name": "David Neres",
                  "ranking": 1290
                }
              ],
              "lower": [
                {
                  "player_name": "Patrick Berg",
                  "ranking": 1292
                },
                {
                  "player_name": "Nicholas Pennington",
                  "ranking": 1293
                },
                {
                  "player_name": "Park Jae-Hwan",
                  "ranking": 1294
                },
                {
                  "player_name": "Franco Frías",
                  "ranking": 1295
                },
                {
                  "player_name": "César Fuentes",
                  "ranking": 1296
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "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.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0001,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 270.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.33,
              "shots_on_target_pct": 25.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (D_service) evaluated 19 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.20, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.1313,
                "tackles": 1.4235,
                "tackles_won": 0.8279,
                "clearances": 4.2278,
                "aerial_won": 1.4472,
                "total_shots": 0.5093,
                "rating": 6.9691,
                "minutes": 78.33,
                "total_pass": 58.0156,
                "accurate_pass": 53.1984,
                "duels_won": 3.1745,
                "total_long_balls": 4.3176,
                "accurate_long_balls": 2.9387,
                "total_own_half_passes": 34.4154,
                "accurate_own_half_passes": 32.6375,
                "total_opp_half_passes": 23.6002,
                "accurate_opp_half_passes": 20.561,
                "crosses_total": 0.0367,
                "crosses_accurate": 0.0367,
                "touches": 68.5579,
                "possession_lost": 5.6446,
                "dispossessed": 0.4599,
                "duels_lost": 1.9798,
                "aerial_lost": 0.7458,
                "total_contest": 0.1096,
                "won_contest": 0.0729,
                "ball_recovery": 3.7925,
                "challenges_lost": 0.1073,
                "fouls": 0.63,
                "fouls_drawn": 0.3964,
                "blocks": 0.8182,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0391,
                "shots_on_target": 0.0973,
                "big_chances_created": 0.0859,
                "xgot": 0.0017,
                "ball_carries": 18.9572,
                "total_progression": 77.9813,
                "progressive_carries": 0.0866,
                "key_pass": 0.2175,
                "shots_off_target": 0.412
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.1572,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1336,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.1136,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0965,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.082,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0697,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-01-24",
                    "opponent": "Real Madrid",
                    "minutes": 24.0,
                    "is_starting": true,
                    "weight": 0.0593,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-01-17",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0504,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-01-10",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0428,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "Elche",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0364,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 19.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.3811,
                  "aerialWon": 1.1762,
                  "totalClearance_p90": 5.5581,
                  "totalTackle": 1.4397,
                  "totalPass": 56.0927
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1313368082046509,
                    "model_output": 1.1313,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1114
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.1
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0226
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0193
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0167
                        }
                      ],
                      "others": -0.0072,
                      "total": 1.1313,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.120701
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.097171
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.020721
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.017312
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.014744
                        }
                      ],
                      "others_margin": -0.006281
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.423484444618225,
                    "model_output": 1.4235,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1595
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0642
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0548
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0503
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0253
                        }
                      ],
                      "others": -0.0783,
                      "total": 1.4235,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.108939
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.042445
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.037687
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.034668
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.01696
                        }
                      ],
                      "others_margin": -0.053514
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8279094099998474,
                    "model_output": 0.8279,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1076
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0447
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0417
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.037
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0332
                        }
                      ],
                      "others": -0.0522,
                      "total": 0.8279,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.119755
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.048079
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.044905
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.039735
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.036987
                        }
                      ],
                      "others_margin": -0.061127
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.227771759033203,
                    "model_output": 4.2278,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4781
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3036
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2551
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.1212
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.1156
                        }
                      ],
                      "others": -0.2351,
                      "total": 4.2278,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130427
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.074788
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.05879
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.027506
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.026238
                        }
                      ],
                      "others_margin": -0.054124
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.4472323656082153,
                    "model_output": 1.4472,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.176
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1602
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0895
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0586
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0565
                        }
                      ],
                      "others": 0.0598,
                      "total": 1.4472,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.136722
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125176
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.068005
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.045023
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.041597
                        }
                      ],
                      "others_margin": 0.042226
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5092766880989075,
                    "model_output": 0.5093,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0587
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0255
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0193
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0162
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.028,
                      "total": 0.5093,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.058679
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.025483
                        },
                        {
                          "name": "rating",
                          "margin": 0.019263
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.016206
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.00989
                        }
                      ],
                      "others_margin": -0.028038
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.969138145446777,
                    "model_output": 6.9691,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": 0.0595
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0341
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0158
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0155
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0114
                        }
                      ],
                      "others": 0.0373,
                      "total": 6.9691,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": 0.059483
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.034091
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.015756
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.015494
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.011434
                        }
                      ],
                      "others_margin": 0.037362
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 19,
                  "role_matches": 18,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0001, quality 0.506)",
              "stats": {
                "interceptions": 1.1314,
                "tackles": 1.4236,
                "tackles_won": 0.828,
                "clearances": 4.2282,
                "aerial_won": 1.4474,
                "total_shots": 0.5094,
                "rating": 6.9691,
                "minutes": 78.33,
                "total_pass": 58.0214,
                "accurate_pass": 53.2037,
                "duels_won": 3.1748,
                "total_long_balls": 4.318,
                "accurate_long_balls": 2.939,
                "total_own_half_passes": 34.4188,
                "accurate_own_half_passes": 32.6408,
                "total_opp_half_passes": 23.6026,
                "accurate_opp_half_passes": 20.5631,
                "crosses_total": 0.0367,
                "crosses_accurate": 0.0367,
                "touches": 68.5648,
                "possession_lost": 5.6452,
                "dispossessed": 0.4599,
                "duels_lost": 1.98,
                "aerial_lost": 0.7459,
                "total_contest": 0.1096,
                "won_contest": 0.0729,
                "ball_recovery": 3.7929,
                "challenges_lost": 0.1073,
                "fouls": 0.6301,
                "fouls_drawn": 0.3964,
                "blocks": 0.8183,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0391,
                "shots_on_target": 0.0973,
                "big_chances_created": 0.0859,
                "xgot": 0.0017,
                "ball_carries": 18.9591,
                "total_progression": 77.9891,
                "progressive_carries": 0.0866,
                "key_pass": 0.2175,
                "shots_off_target": 0.412
              },
              "params": {
                "market_value_eur": 8600000,
                "quality_factor": 0.5059,
                "boost_factor": 1.0001,
                "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.0271)",
              "stats": {
                "interceptions": 1.1558,
                "tackles": 1.4236,
                "tackles_won": 0.8449,
                "clearances": 4.2282,
                "aerial_won": 1.4474,
                "total_shots": 0.527,
                "rating": 6.9691,
                "minutes": 78.33,
                "total_pass": 58.0214,
                "accurate_pass": 53.2037,
                "duels_won": 3.1748,
                "total_long_balls": 4.318,
                "accurate_long_balls": 2.939,
                "total_own_half_passes": 34.4188,
                "accurate_own_half_passes": 32.6408,
                "total_opp_half_passes": 23.6026,
                "accurate_opp_half_passes": 20.5631,
                "crosses_total": 0.0357,
                "crosses_accurate": 0.0367,
                "touches": 68.5648,
                "possession_lost": 5.6452,
                "dispossessed": 0.4599,
                "duels_lost": 1.98,
                "aerial_lost": 0.7459,
                "total_contest": 0.1096,
                "won_contest": 0.0729,
                "ball_recovery": 3.7929,
                "challenges_lost": 0.1073,
                "fouls": 0.6209,
                "fouls_drawn": 0.4014,
                "blocks": 0.8183,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0391,
                "shots_on_target": 0.1024,
                "big_chances_created": 0.0859,
                "xgot": 0.0017,
                "ball_carries": 18.9591,
                "total_progression": 77.9891,
                "progressive_carries": 0.0866,
                "key_pass": 0.2175,
                "shots_off_target": 0.412
              },
              "params": {
                "blend_weight": 0.0271,
                "history_matches": 19,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8703,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 1.1314,
                  "after": 1.1558
                },
                {
                  "stat": "totalShots",
                  "before": 0.5094,
                  "after": 0.527
                },
                {
                  "stat": "wonTackle",
                  "before": 0.828,
                  "after": 0.8449
                },
                {
                  "stat": "fouls",
                  "before": 0.6301,
                  "after": 0.6209
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.0973,
                  "after": 0.1024
                },
                {
                  "stat": "wasFouled",
                  "before": 0.3964,
                  "after": 0.4014
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1558,
                "tackles": 1.4236,
                "tackles_won": 0.8449,
                "clearances": 4.2282,
                "aerial_won": 1.4474,
                "total_shots": 0.527,
                "rating": 6.9691,
                "minutes": 78.33,
                "total_pass": 58.0214,
                "accurate_pass": 53.2037,
                "duels_won": 3.1748,
                "total_long_balls": 4.318,
                "accurate_long_balls": 2.939,
                "total_own_half_passes": 34.4188,
                "accurate_own_half_passes": 32.6408,
                "total_opp_half_passes": 23.6026,
                "accurate_opp_half_passes": 20.5631,
                "crosses_total": 0.0357,
                "crosses_accurate": 0.0357,
                "touches": 68.5648,
                "possession_lost": 5.6452,
                "dispossessed": 0.4599,
                "duels_lost": 1.98,
                "aerial_lost": 0.7459,
                "total_contest": 0.1096,
                "won_contest": 0.0729,
                "ball_recovery": 3.7929,
                "challenges_lost": 0.1073,
                "fouls": 0.6209,
                "fouls_drawn": 0.4014,
                "blocks": 0.8183,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0391,
                "shots_on_target": 0.1024,
                "big_chances_created": 0.0859,
                "xgot": 0.0017,
                "ball_carries": 18.9591,
                "total_progression": 77.9891,
                "progressive_carries": 0.0866,
                "key_pass": 0.2175,
                "shots_off_target": 0.412
              },
              "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.1558,
                "tackles": 1.4236,
                "tackles_won": 0.8449,
                "clearances": 4.2282,
                "aerial_won": 1.4474,
                "total_shots": 0.527,
                "rating": 6.9691,
                "minutes": 78.33,
                "total_pass": 58.0214,
                "accurate_pass": 53.2037,
                "duels_won": 3.1748,
                "total_long_balls": 4.318,
                "accurate_long_balls": 2.939,
                "total_own_half_passes": 34.4188,
                "accurate_own_half_passes": 32.6408,
                "total_opp_half_passes": 23.6026,
                "accurate_opp_half_passes": 20.5631,
                "crosses_total": 0.0357,
                "crosses_accurate": 0.0357,
                "touches": 68.5648,
                "possession_lost": 5.6452,
                "dispossessed": 0.4599,
                "duels_lost": 1.98,
                "aerial_lost": 0.7459,
                "total_contest": 0.1096,
                "won_contest": 0.0729,
                "ball_recovery": 3.7929,
                "challenges_lost": 0.1073,
                "fouls": 0.6209,
                "fouls_drawn": 0.4014,
                "blocks": 0.8183,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0391,
                "shots_on_target": 0.1024,
                "big_chances_created": 0.0859,
                "xgot": 0.0017,
                "ball_carries": 18.9591,
                "total_progression": 77.9891,
                "progressive_carries": 0.0866,
                "key_pass": 0.2175,
                "shots_off_target": 0.412,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.61,
                "opponent_faced": "Edu Expósito",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Edu Expósito",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1558,
                "tackles": 1.4236,
                "tackles_won": 0.8449,
                "clearances": 4.2282,
                "aerial_won": 1.4474,
                "total_shots": 0.527,
                "rating": 6.9691,
                "minutes": 78.33,
                "total_pass": 58.0214,
                "accurate_pass": 53.2037,
                "duels_won": 3.1748,
                "total_long_balls": 4.318,
                "accurate_long_balls": 2.939,
                "total_own_half_passes": 34.4188,
                "accurate_own_half_passes": 32.6408,
                "total_opp_half_passes": 23.6026,
                "accurate_opp_half_passes": 20.5631,
                "crosses_total": 0.0357,
                "crosses_accurate": 0.0357,
                "touches": 68.5648,
                "possession_lost": 5.6452,
                "dispossessed": 0.4599,
                "duels_lost": 1.98,
                "aerial_lost": 0.7459,
                "total_contest": 0.1096,
                "won_contest": 0.0729,
                "ball_recovery": 3.7929,
                "challenges_lost": 0.1073,
                "fouls": 0.6209,
                "fouls_drawn": 0.4014,
                "blocks": 0.8183,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0391,
                "shots_on_target": 0.1024,
                "big_chances_created": 0.0859,
                "xgot": 0.0017,
                "ball_carries": 18.9591,
                "total_progression": 77.9891,
                "progressive_carries": 0.0866,
                "key_pass": 0.2175,
                "shots_off_target": 0.412,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.61,
                "opponent_faced": "Edu Expósito",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "interceptions": 1.1558,
                "tackles": 1.4236,
                "tackles_won": 0.8449,
                "clearances": 4.2282,
                "aerial_won": 1.4474,
                "total_shots": 0.527,
                "rating": 6.9691,
                "minutes": 78.33,
                "total_pass": 58.0214,
                "accurate_pass": 53.2037,
                "duels_won": 3.1748,
                "total_long_balls": 4.318,
                "accurate_long_balls": 2.939,
                "total_own_half_passes": 34.4188,
                "accurate_own_half_passes": 32.6408,
                "total_opp_half_passes": 23.6026,
                "accurate_opp_half_passes": 20.5631,
                "crosses_total": 0.0357,
                "crosses_accurate": 0.0357,
                "touches": 68.5648,
                "possession_lost": 5.6452,
                "dispossessed": 0.4599,
                "duels_lost": 1.98,
                "aerial_lost": 0.7459,
                "total_contest": 0.1096,
                "won_contest": 0.0729,
                "ball_recovery": 3.7929,
                "challenges_lost": 0.1073,
                "fouls": 0.6209,
                "fouls_drawn": 0.4014,
                "blocks": 0.8183,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0421,
                "expected_assists": 0.0493,
                "shots_on_target": 0.1024,
                "big_chances_created": 0.0859,
                "xgot": 0.0021,
                "ball_carries": 18.9591,
                "total_progression": 77.9891,
                "progressive_carries": 0.0866,
                "key_pass": 0.2175,
                "shots_off_target": 0.412,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.61,
                "opponent_faced": "Edu Expósito",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0334,
                  "after": 0.0421
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0391,
                  "after": 0.0493
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 79.0)",
              "stats": {
                "interceptions": 1.1558,
                "tackles": 1.4236,
                "tackles_won": 0.8449,
                "clearances": 4.2282,
                "aerial_won": 1.4474,
                "total_shots": 0.527,
                "rating": 6.9691,
                "minutes": 78.33,
                "total_pass": 58.0214,
                "accurate_pass": 53.2037,
                "duels_won": 3.1748,
                "total_long_balls": 4.318,
                "accurate_long_balls": 2.939,
                "total_own_half_passes": 34.4188,
                "accurate_own_half_passes": 32.6408,
                "total_opp_half_passes": 23.6026,
                "accurate_opp_half_passes": 20.5631,
                "crosses_total": 0.0357,
                "crosses_accurate": 0.0357,
                "touches": 68.5648,
                "possession_lost": 5.6452,
                "dispossessed": 0.4599,
                "duels_lost": 1.98,
                "aerial_lost": 0.7459,
                "total_contest": 0.1096,
                "won_contest": 0.0729,
                "ball_recovery": 3.7929,
                "challenges_lost": 0.1073,
                "fouls": 0.6209,
                "fouls_drawn": 0.4014,
                "blocks": 0.8183,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0421,
                "expected_assists": 0.0493,
                "shots_on_target": 0.1024,
                "big_chances_created": 0.0859,
                "xgot": 0.0021,
                "ball_carries": 18.9591,
                "total_progression": 77.9891,
                "progressive_carries": 0.0866,
                "key_pass": 0.2175,
                "shots_off_target": 0.412,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.61,
                "opponent_faced": "Edu Expósito",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 7,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1291,
                "fifa_rank": 962.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.1558,
                "tackles": 1.4236,
                "tackles_won": 0.8449,
                "clearances": 4.2282,
                "aerial_won": 1.4474,
                "total_shots": 0.527,
                "rating": 6.9691,
                "minutes": 78.33,
                "total_pass": 58.0214,
                "accurate_pass": 53.2037,
                "duels_won": 3.1748,
                "total_long_balls": 4.318,
                "accurate_long_balls": 2.939,
                "total_own_half_passes": 34.4188,
                "accurate_own_half_passes": 32.6408,
                "total_opp_half_passes": 23.6026,
                "accurate_opp_half_passes": 20.5631,
                "crosses_total": 0.0357,
                "crosses_accurate": 0.0357,
                "touches": 68.5648,
                "possession_lost": 5.6452,
                "dispossessed": 0.4599,
                "duels_lost": 1.98,
                "aerial_lost": 0.7459,
                "total_contest": 0.1096,
                "won_contest": 0.0729,
                "ball_recovery": 3.7929,
                "challenges_lost": 0.1073,
                "fouls": 0.6209,
                "fouls_drawn": 0.4014,
                "blocks": 0.8183,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0421,
                "expected_assists": 0.0493,
                "shots_on_target": 0.1024,
                "big_chances_created": 0.0859,
                "xgot": 0.0021,
                "ball_carries": 18.9591,
                "total_progression": 77.9891,
                "progressive_carries": 0.0866,
                "key_pass": 0.2175,
                "shots_off_target": 0.412,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.61,
                "opponent_faced": "Edu Expósito",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0412,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0412,
                "goal_rate": 0.0,
                "scorer_weight": 0.0337,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0171,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.1558,
                "tackles": 1.4236,
                "tackles_won": 0.8449,
                "clearances": 4.2282,
                "aerial_won": 1.4474,
                "total_shots": 0.527,
                "rating": 6.9691,
                "minutes": 78.33,
                "total_pass": 58.0214,
                "accurate_pass": 53.2037,
                "duels_won": 3.1748,
                "total_long_balls": 4.318,
                "accurate_long_balls": 2.939,
                "total_own_half_passes": 34.4188,
                "accurate_own_half_passes": 32.6408,
                "total_opp_half_passes": 23.6026,
                "accurate_opp_half_passes": 20.5631,
                "crosses_total": 0.0357,
                "crosses_accurate": 0.0357,
                "touches": 68.5648,
                "possession_lost": 5.6452,
                "dispossessed": 0.4599,
                "duels_lost": 1.98,
                "aerial_lost": 0.7459,
                "total_contest": 0.1096,
                "won_contest": 0.0729,
                "ball_recovery": 3.7929,
                "challenges_lost": 0.1073,
                "fouls": 0.6209,
                "fouls_drawn": 0.4014,
                "blocks": 0.8183,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0421,
                "expected_assists": 0.0493,
                "shots_on_target": 0.1024,
                "big_chances_created": 0.0859,
                "xgot": 0.0021,
                "ball_carries": 18.9591,
                "total_progression": 77.9891,
                "progressive_carries": 0.0866,
                "key_pass": 0.2175,
                "shots_off_target": 0.412,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.61,
                "opponent_faced": "Edu Expósito",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0412,
                "projected_assists": 0,
                "assist_probability": 0.0481,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0481,
                "assist_rate": 0.0,
                "provider_weight": 0.0394,
                "squad_weight_total": 1.3182,
                "weight_share": 0.0299,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Péter Gulácsi": {
          "player_id": 37096,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 25,
          "height": 190,
          "market_value": 970000,
          "stats": {
            "saves": 3,
            "goals_prevented": 0.0495,
            "rating": 7.0149,
            "minutes": 90,
            "total_pass": 22,
            "accurate_pass": 19,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "touches": 32,
            "clearances": 1,
            "ball_recovery": 7,
            "high_claims": 1,
            "punches": 0.5697,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 2.6722,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 20,
            "accurate_own_half_passes": 19,
            "gk_engine_opponent_lambda": 1.2142,
            "shots_faced": 11.3,
            "expected_saves": 2.76,
            "high_pressure_saves": 0.95,
            "opponent_faced": "Roberto Fernández, Álex Calatrava",
            "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": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 15,
                "accurate_pass": 12,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 4,
                "saves": 4,
                "goals_prevented": 0.2771
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 22,
                "ball_recovery": 12,
                "saves": 1,
                "goals_prevented": 0.2455
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 17,
                "ball_recovery": 6,
                "saves": 3,
                "goals_prevented": 0.42
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 33,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 8,
                "goals_prevented": -0.4904
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 20,
                "ball_recovery": 3,
                "goals_prevented": -0.0784
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 9.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 18,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 8,
                "saves": 10,
                "goals_prevented": 1.96
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 616,
            "combined_rank_score": 318.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 409.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0149,
            "source_file": "data/player_rankings.csv",
            "player_name": "Péter Gulácsi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mender García",
                  "ranking": 611
                },
                {
                  "player_name": "José Fajardo",
                  "ranking": 612
                },
                {
                  "player_name": "Konstantinos Fortounis",
                  "ranking": 613
                },
                {
                  "player_name": "N'Golo Kanté",
                  "ranking": 614
                },
                {
                  "player_name": "Mason Greenwood",
                  "ranking": 615
                }
              ],
              "lower": [
                {
                  "player_name": "Oliver Baumann",
                  "ranking": 617
                },
                {
                  "player_name": "Iñigo Martínez",
                  "ranking": 618
                },
                {
                  "player_name": "Omar Marmoush",
                  "ranking": 619
                },
                {
                  "player_name": "Pathé Ismaël Ciss",
                  "ranking": 620
                },
                {
                  "player_name": "Riccardo Orsolini",
                  "ranking": 621
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.625,
          "history_matches": 6,
          "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": 6,
            "data_confidence": 0.625,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9908,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "XGBoost regressor (G_service) evaluated 6 historical appearances across 3 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.00, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.8054,
                "goals_prevented": 0.05,
                "rating": 7.0149,
                "minutes": 90.0,
                "total_pass": 22.3668,
                "accurate_pass": 19.6698,
                "total_long_balls": 5.6173,
                "accurate_long_balls": 3.3351,
                "touches": 31.8584,
                "clearances": 1.019,
                "ball_recovery": 6.8789,
                "high_claims": 0.5551,
                "punches": 0.575,
                "aerial_won": 0.2548,
                "sweeper_actions": 0.6574,
                "sweeper_accurate": 0.6574,
                "saves_inside_box": 2.2062,
                "possession_lost": 2.697,
                "duels_won": 0.2548,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 20.678,
                "accurate_own_half_passes": 19.4957
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-30T10:03:31.159511+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 201,
                    "rows": 7335
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2408,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2047,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.174,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1479,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1257,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1069,
                    "rating": 9.6
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 1.0,
                  "sweeper_actions_p90": 0.6574,
                  "accurateOwnHalfPasses": 19.4958,
                  "totalLongBalls": 5.6173,
                  "commanding_index": 0.8448,
                  "accurateKeeperSweeper": 0.6574,
                  "distribution_accuracy": 0.933
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.805389165878296,
                    "model_output": 2.8054,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0453
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0393
                      },
                      {
                        "name": "save_contribution",
                        "importance": 0.038
                      },
                      {
                        "name": "saves",
                        "importance": 0.0361
                      },
                      {
                        "name": "commanding_index",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 2.9243,
                      "items": [
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.059
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0459
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0154
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.015
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0123
                        }
                      ],
                      "others": -0.0267,
                      "total": 2.8054,
                      "log_link": true,
                      "margin_base": 1.07304,
                      "item_margins": [
                        {
                          "name": "totalLongBalls",
                          "margin": -0.020394
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.016148
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.005458
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": -0.005312
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.004366
                        }
                      ],
                      "others_margin": -0.009468
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.04995984956622124,
                    "model_output": 0.05,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0462
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0392
                      },
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0391
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0381
                      },
                      {
                        "name": "punches",
                        "importance": 0.0369
                      }
                    ],
                    "decomposition": {
                      "base": -0.0231,
                      "items": [
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0538
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0295
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0177
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0169
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0121
                        }
                      ],
                      "others": -0.0231,
                      "total": 0.05,
                      "log_link": false,
                      "margin_base": -0.023055,
                      "item_margins": [
                        {
                          "name": "pass_accuracy",
                          "margin": 0.053783
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.029523
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.017669
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.016947
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.012057
                        }
                      ],
                      "others_margin": -0.023072
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.014884948730469,
                    "model_output": 7.0149,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalLongBalls",
                        "importance": 0.039
                      },
                      {
                        "name": "accurateKeeperSweeper",
                        "importance": 0.0364
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.036
                      },
                      {
                        "name": "totalKeeperSweeper",
                        "importance": 0.0357
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0356
                      }
                    ],
                    "decomposition": {
                      "base": 6.9903,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0272
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0255
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0223
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.0203
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "contribution": 0.0188
                        }
                      ],
                      "others": -0.0489,
                      "total": 7.0149,
                      "log_link": false,
                      "margin_base": 6.99032,
                      "item_margins": [
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.027187
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.025488
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.022288
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": -0.020312
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "margin": 0.018754
                        }
                      ],
                      "others_margin": -0.04884
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 6,
                  "role_matches": 6,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9908, quality 0.437)",
              "stats": {
                "saves": 2.7796,
                "goals_prevented": 0.0495,
                "rating": 7.0149,
                "minutes": 90.0,
                "total_pass": 22.161,
                "accurate_pass": 19.4888,
                "total_long_balls": 5.5656,
                "accurate_long_balls": 3.3044,
                "touches": 31.5653,
                "clearances": 1.0096,
                "ball_recovery": 6.8156,
                "high_claims": 0.55,
                "punches": 0.5697,
                "aerial_won": 0.2525,
                "sweeper_actions": 0.6514,
                "sweeper_accurate": 0.6514,
                "saves_inside_box": 2.1859,
                "possession_lost": 2.6722,
                "duels_won": 0.2525,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 20.4878,
                "accurate_own_half_passes": 19.3163
              },
              "params": {
                "market_value_eur": 970000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9908,
                "reference_quality": 0.505,
                "history_matches": 6,
                "history_shrink": 0.4545,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.7796,
                "goals_prevented": 0.0495,
                "rating": 7.0149,
                "minutes": 90.0,
                "total_pass": 22.161,
                "accurate_pass": 19.4888,
                "total_long_balls": 5.5656,
                "accurate_long_balls": 3.3044,
                "touches": 31.5653,
                "clearances": 1.0096,
                "ball_recovery": 6.8156,
                "high_claims": 0.55,
                "punches": 0.5697,
                "aerial_won": 0.2525,
                "sweeper_actions": 0.6514,
                "sweeper_accurate": 0.6514,
                "saves_inside_box": 2.1859,
                "possession_lost": 2.6722,
                "duels_won": 0.2525,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 20.4878,
                "accurate_own_half_passes": 19.3163
              },
              "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.7796,
                "goals_prevented": 0.0495,
                "rating": 7.0149,
                "minutes": 90.0,
                "total_pass": 22.161,
                "accurate_pass": 19.4888,
                "total_long_balls": 5.5656,
                "accurate_long_balls": 3.3044,
                "touches": 31.5653,
                "clearances": 1.0096,
                "ball_recovery": 6.8156,
                "high_claims": 0.55,
                "punches": 0.5697,
                "aerial_won": 0.2525,
                "sweeper_actions": 0.6514,
                "sweeper_accurate": 0.6514,
                "saves_inside_box": 2.1859,
                "possession_lost": 2.6722,
                "duels_won": 0.2525,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 20.4878,
                "accurate_own_half_passes": 19.3163,
                "gk_engine_opponent_lambda": 1.2142,
                "shots_faced": 11.5,
                "expected_saves": 2.81,
                "high_pressure_saves": 0.97,
                "opponent_faced": "Roberto Fernández, Álex Calatrava",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Roberto Fernández, Álex Calatrava",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.2142
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "saves": 2.7796,
                "goals_prevented": 0.0495,
                "rating": 7.0149,
                "minutes": 90.0,
                "total_pass": 22.161,
                "accurate_pass": 19.4888,
                "total_long_balls": 5.5656,
                "accurate_long_balls": 3.3044,
                "touches": 31.5653,
                "clearances": 1.0096,
                "ball_recovery": 6.8156,
                "high_claims": 0.55,
                "punches": 0.5697,
                "aerial_won": 0.2525,
                "sweeper_actions": 0.6514,
                "sweeper_accurate": 0.6514,
                "saves_inside_box": 2.1859,
                "possession_lost": 2.6722,
                "duels_won": 0.2525,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 20.4878,
                "accurate_own_half_passes": 19.3163,
                "gk_engine_opponent_lambda": 1.2142,
                "shots_faced": 11.5,
                "expected_saves": 2.81,
                "high_pressure_saves": 0.97,
                "opponent_faced": "Roberto Fernández, Álex Calatrava",
                "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": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "saves": 2.7796,
                "goals_prevented": 0.0495,
                "rating": 7.0149,
                "minutes": 90.0,
                "total_pass": 22.161,
                "accurate_pass": 19.4888,
                "total_long_balls": 5.5656,
                "accurate_long_balls": 3.3044,
                "touches": 31.5653,
                "clearances": 1.0096,
                "ball_recovery": 6.8156,
                "high_claims": 0.55,
                "punches": 0.5697,
                "aerial_won": 0.2525,
                "sweeper_actions": 0.6514,
                "sweeper_accurate": 0.6514,
                "saves_inside_box": 2.1859,
                "possession_lost": 2.6722,
                "duels_won": 0.2525,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 20.4878,
                "accurate_own_half_passes": 19.3163,
                "gk_engine_opponent_lambda": 1.2142,
                "shots_faced": 11.3,
                "expected_saves": 2.76,
                "high_pressure_saves": 0.95,
                "opponent_faced": "Roberto Fernández, Álex Calatrava",
                "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.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 11.5,
                  "after": 11.3
                },
                {
                  "stat": "expected_saves",
                  "before": 2.81,
                  "after": 2.76
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 0.97,
                  "after": 0.95
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 82.0)",
              "stats": {
                "saves": 2.7796,
                "goals_prevented": 0.0495,
                "rating": 7.0149,
                "minutes": 90.0,
                "total_pass": 22.161,
                "accurate_pass": 19.4888,
                "total_long_balls": 5.5656,
                "accurate_long_balls": 3.3044,
                "touches": 31.5653,
                "clearances": 1.0096,
                "ball_recovery": 6.8156,
                "high_claims": 0.55,
                "punches": 0.5697,
                "aerial_won": 0.2525,
                "sweeper_actions": 0.6514,
                "sweeper_accurate": 0.6514,
                "saves_inside_box": 2.1859,
                "possession_lost": 2.6722,
                "duels_won": 0.2525,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 20.4878,
                "accurate_own_half_passes": 19.3163,
                "gk_engine_opponent_lambda": 1.2142,
                "shots_faced": 11.3,
                "expected_saves": 2.76,
                "high_pressure_saves": 0.95,
                "opponent_faced": "Roberto Fernández, Álex Calatrava",
                "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": 82.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": 616,
                "fifa_rank": 409.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "saves": 2.7796,
                "goals_prevented": 0.0495,
                "rating": 7.0149,
                "minutes": 90.0,
                "total_pass": 22.161,
                "accurate_pass": 19.4888,
                "total_long_balls": 5.5656,
                "accurate_long_balls": 3.3044,
                "touches": 31.5653,
                "clearances": 1.0096,
                "ball_recovery": 6.8156,
                "high_claims": 0.55,
                "punches": 0.5697,
                "aerial_won": 0.2525,
                "sweeper_actions": 0.6514,
                "sweeper_accurate": 0.6514,
                "saves_inside_box": 2.1859,
                "possession_lost": 2.6722,
                "duels_won": 0.2525,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 20.4878,
                "accurate_own_half_passes": 19.3163,
                "gk_engine_opponent_lambda": 1.2142,
                "shots_faced": 11.3,
                "expected_saves": 2.76,
                "high_pressure_saves": 0.95,
                "opponent_faced": "Roberto Fernández, Álex Calatrava",
                "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": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.7796,
                "goals_prevented": 0.0495,
                "rating": 7.0149,
                "minutes": 90.0,
                "total_pass": 22.161,
                "accurate_pass": 19.4888,
                "total_long_balls": 5.5656,
                "accurate_long_balls": 3.3044,
                "touches": 31.5653,
                "clearances": 1.0096,
                "ball_recovery": 6.8156,
                "high_claims": 0.55,
                "punches": 0.5697,
                "aerial_won": 0.2525,
                "sweeper_actions": 0.6514,
                "sweeper_accurate": 0.6514,
                "saves_inside_box": 2.1859,
                "possession_lost": 2.6722,
                "duels_won": 0.2525,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 20.4878,
                "accurate_own_half_passes": 19.3163,
                "gk_engine_opponent_lambda": 1.2142,
                "shots_faced": 11.3,
                "expected_saves": 2.76,
                "high_pressure_saves": 0.95,
                "opponent_faced": "Roberto Fernández, Álex Calatrava",
                "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": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 1.3182,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Alexander Freeman": {
          "player_id": 1184541,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 188,
          "market_value": 13800000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 7.0549,
            "minutes": 90,
            "total_pass": 66,
            "accurate_pass": 60,
            "duels_won": 7,
            "total_long_balls": 4,
            "accurate_long_balls": 3,
            "total_own_half_passes": 30,
            "accurate_own_half_passes": 28,
            "total_opp_half_passes": 36,
            "accurate_opp_half_passes": 32,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 93,
            "possession_lost": 11.1379,
            "dispossessed": 1.109,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 7,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.235,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0542,
            "expected_assists": 0.0926,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0786,
            "ball_carries": 23,
            "total_progression": 83,
            "progressive_carries": 2,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Roberto Fernández",
            "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.0528,
            "projected_assists": 0,
            "assist_probability": 0.0884,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1275,
                "expected_assists": 0.1764,
                "total_shots": 1,
                "shots_on_target": 1,
                "shots_off_target": 0,
                "total_pass": 57,
                "accurate_pass": 49,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 0,
                "clearances": 4,
                "aerial_won": 0,
                "duels_won": 7,
                "ball_recovery": 6,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1054,
                "total_shots": 0,
                "total_pass": 77,
                "accurate_pass": 68,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0267,
                "total_shots": 0,
                "total_pass": 53,
                "accurate_pass": 48,
                "key_pass": 2,
                "tackles": 7,
                "tackles_won": 5,
                "interceptions": 3,
                "clearances": 7,
                "aerial_won": 3,
                "duels_won": 11,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0975,
                "expected_assists": 0.0373,
                "total_shots": 1,
                "total_pass": 72,
                "accurate_pass": 69,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0657,
                "total_shots": 0,
                "total_pass": 68,
                "accurate_pass": 62,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 8,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 14,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0127,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 17,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0716,
                "expected_assists": 0.0423,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 83,
                "accurate_pass": 80,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 28,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.059,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083644,
              "match_date": "2026-05-13",
              "home_team": "Villarreal",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0261,
                "total_shots": 0,
                "total_pass": 72,
                "accurate_pass": 65,
                "tackles": 5,
                "tackles_won": 4,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 416,
            "combined_rank_score": 378.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 257.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 2.0,
            "fifa_rank": 500.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0549,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alexander Freeman",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Itsuki Urata",
                  "ranking": 411
                },
                {
                  "player_name": "Chi-Won Choi",
                  "ranking": 412
                },
                {
                  "player_name": "Youssef Enriquez",
                  "ranking": 413
                },
                {
                  "player_name": "Beom Song",
                  "ranking": 414
                },
                {
                  "player_name": "Irakli Azarovi",
                  "ranking": 415
                }
              ],
              "lower": [
                {
                  "player_name": "Johaneko Louis Jean",
                  "ranking": 417
                },
                {
                  "player_name": "Roman Begunov",
                  "ranking": 418
                },
                {
                  "player_name": "Cristhian Paredes",
                  "ranking": 419
                },
                {
                  "player_name": "Alex Sandro",
                  "ranking": 420
                },
                {
                  "player_name": "Ismoilbek Usmonxo'jayev",
                  "ranking": 421
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 18,
          "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": 18,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.004,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 18 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.0793,
                "tackles": 1.9866,
                "tackles_won": 1.2168,
                "clearances": 2.6116,
                "aerial_won": 1.0849,
                "total_shots": 0.6127,
                "rating": 7.0549,
                "minutes": 90.0,
                "total_pass": 65.5765,
                "accurate_pass": 59.7757,
                "duels_won": 6.9292,
                "total_long_balls": 3.8065,
                "accurate_long_balls": 2.7166,
                "total_own_half_passes": 29.7916,
                "accurate_own_half_passes": 28.1404,
                "total_opp_half_passes": 35.7849,
                "accurate_opp_half_passes": 31.6354,
                "crosses_total": 0.8731,
                "crosses_accurate": 0.0,
                "touches": 92.2066,
                "possession_lost": 11.0935,
                "dispossessed": 1.1046,
                "duels_lost": 5.0993,
                "aerial_lost": 1.1981,
                "total_contest": 2.4685,
                "won_contest": 1.4579,
                "ball_recovery": 7.0033,
                "challenges_lost": 1.2605,
                "fouls": 0.6916,
                "fouls_drawn": 1.2588,
                "blocks": 0.2679,
                "goals": 0.2341,
                "goal_rate": 0.2341,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0428,
                "expected_assists": 0.0732,
                "shots_on_target": 0.2818,
                "big_chances_created": 0.1659,
                "xgot": 0.0622,
                "ball_carries": 23.28,
                "total_progression": 82.6225,
                "progressive_carries": 1.8176,
                "key_pass": 1.1801,
                "shots_off_target": 0.3309
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1585,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1347,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1145,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0973,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0827,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0703,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0598,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0508,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 2.0,
                    "is_starting": false,
                    "weight": 0.0432,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0367,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 18.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.7086,
                  "aerialWon": 1.2437,
                  "totalClearance_p90": 3.71,
                  "totalTackle": 2.1792,
                  "totalPass": 52.7345
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0792794227600098,
                    "model_output": 1.0793,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1222
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0298
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0271
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0193
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0156
                        }
                      ],
                      "others": 0.028,
                      "total": 1.0793,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.131674
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.02961
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.026256
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.018213
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.014713
                        }
                      ],
                      "others_margin": 0.026221
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.9865596294403076,
                    "model_output": 1.9866,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2114
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1093
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0902
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0758
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0786
                        }
                      ],
                      "others": 0.0356,
                      "total": 1.9866,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.141966
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.066172
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.051499
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.041346
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.041127
                        }
                      ],
                      "others_margin": 0.018108
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.2167551517486572,
                    "model_output": 1.2168,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.128
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.075
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0608
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0617
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.051
                        }
                      ],
                      "others": -0.0054,
                      "total": 1.2168,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.14091
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.074166
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.05634
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.054104
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.042641
                        }
                      ],
                      "others_margin": -0.004388
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.611593246459961,
                    "model_output": 2.6116,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4615
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.3339
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2975
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2211
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.1123
                        }
                      ],
                      "others": -0.3168,
                      "total": 2.6116,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126173
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.089672
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.087286
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.070207
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.03762
                        }
                      ],
                      "others_margin": -0.114491
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.0849227905273438,
                    "model_output": 1.0849,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.1622
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1485
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0716
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0657
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0593
                        }
                      ],
                      "others": -0.0824,
                      "total": 1.0849,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.125243
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.115254
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.053915
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.052146
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.049547
                        }
                      ],
                      "others_margin": -0.073252
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6127137541770935,
                    "model_output": 0.6127,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0609
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0207
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0153
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.013
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0117
                        }
                      ],
                      "others": 0.0126,
                      "total": 0.6127,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.060902
                        },
                        {
                          "name": "rating",
                          "margin": 0.020677
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.015314
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.013037
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.011731
                        }
                      ],
                      "others_margin": 0.012513
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.054880142211914,
                    "model_output": 7.0549,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0787
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0606
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0404
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0312
                        },
                        {
                          "name": "rating",
                          "contribution": 0.023
                        }
                      ],
                      "others": 0.0255,
                      "total": 7.0549,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.078682
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.060637
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.04036
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.03117
                        },
                        {
                          "name": "rating",
                          "margin": 0.02301
                        }
                      ],
                      "others_margin": 0.025506
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 18,
                  "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.0040, quality 0.566)",
              "stats": {
                "interceptions": 1.0836,
                "tackles": 1.9945,
                "tackles_won": 1.2216,
                "clearances": 2.622,
                "aerial_won": 1.0893,
                "total_shots": 0.6152,
                "rating": 7.0549,
                "minutes": 90.0,
                "total_pass": 65.8388,
                "accurate_pass": 60.0148,
                "duels_won": 6.9569,
                "total_long_balls": 3.8217,
                "accurate_long_balls": 2.7275,
                "total_own_half_passes": 29.9108,
                "accurate_own_half_passes": 28.253,
                "total_opp_half_passes": 35.928,
                "accurate_opp_half_passes": 31.7619,
                "crosses_total": 0.8766,
                "crosses_accurate": 0.0,
                "touches": 92.5754,
                "possession_lost": 11.1379,
                "dispossessed": 1.109,
                "duels_lost": 5.1197,
                "aerial_lost": 1.2029,
                "total_contest": 2.4784,
                "won_contest": 1.4637,
                "ball_recovery": 7.0313,
                "challenges_lost": 1.2655,
                "fouls": 0.6944,
                "fouls_drawn": 1.2638,
                "blocks": 0.269,
                "goals": 0.235,
                "goal_rate": 0.235,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.043,
                "expected_assists": 0.0735,
                "shots_on_target": 0.2829,
                "big_chances_created": 0.1666,
                "xgot": 0.0624,
                "ball_carries": 23.3731,
                "total_progression": 82.953,
                "progressive_carries": 1.8249,
                "key_pass": 1.1848,
                "shots_off_target": 0.3322
              },
              "params": {
                "market_value_eur": 13800000,
                "quality_factor": 0.566,
                "boost_factor": 1.004,
                "reference_quality": 0.505,
                "history_matches": 18,
                "history_shrink": 0.2174,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0836,
                "tackles": 1.9945,
                "tackles_won": 1.2216,
                "clearances": 2.622,
                "aerial_won": 1.0893,
                "total_shots": 0.6152,
                "rating": 7.0549,
                "minutes": 90.0,
                "total_pass": 65.8388,
                "accurate_pass": 60.0148,
                "duels_won": 6.9569,
                "total_long_balls": 3.8217,
                "accurate_long_balls": 2.7275,
                "total_own_half_passes": 29.9108,
                "accurate_own_half_passes": 28.253,
                "total_opp_half_passes": 35.928,
                "accurate_opp_half_passes": 31.7619,
                "crosses_total": 0.8766,
                "crosses_accurate": 0.0,
                "touches": 92.5754,
                "possession_lost": 11.1379,
                "dispossessed": 1.109,
                "duels_lost": 5.1197,
                "aerial_lost": 1.2029,
                "total_contest": 2.4784,
                "won_contest": 1.4637,
                "ball_recovery": 7.0313,
                "challenges_lost": 1.2655,
                "fouls": 0.6944,
                "fouls_drawn": 1.2638,
                "blocks": 0.269,
                "goals": 0.235,
                "goal_rate": 0.235,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.043,
                "expected_assists": 0.0735,
                "shots_on_target": 0.2829,
                "big_chances_created": 0.1666,
                "xgot": 0.0624,
                "ball_carries": 23.3731,
                "total_progression": 82.953,
                "progressive_carries": 1.8249,
                "key_pass": 1.1848,
                "shots_off_target": 0.3322
              },
              "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.0836,
                "tackles": 1.9945,
                "tackles_won": 1.2216,
                "clearances": 2.622,
                "aerial_won": 1.0893,
                "total_shots": 0.6152,
                "rating": 7.0549,
                "minutes": 90.0,
                "total_pass": 65.8388,
                "accurate_pass": 60.0148,
                "duels_won": 6.9569,
                "total_long_balls": 3.8217,
                "accurate_long_balls": 2.7275,
                "total_own_half_passes": 29.9108,
                "accurate_own_half_passes": 28.253,
                "total_opp_half_passes": 35.928,
                "accurate_opp_half_passes": 31.7619,
                "crosses_total": 0.8766,
                "crosses_accurate": 0.0,
                "touches": 92.5754,
                "possession_lost": 11.1379,
                "dispossessed": 1.109,
                "duels_lost": 5.1197,
                "aerial_lost": 1.2029,
                "total_contest": 2.4784,
                "won_contest": 1.4637,
                "ball_recovery": 7.0313,
                "challenges_lost": 1.2655,
                "fouls": 0.6944,
                "fouls_drawn": 1.2638,
                "blocks": 0.269,
                "goals": 0.235,
                "goal_rate": 0.235,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.043,
                "expected_assists": 0.0735,
                "shots_on_target": 0.2829,
                "big_chances_created": 0.1666,
                "xgot": 0.0624,
                "ball_carries": 23.3731,
                "total_progression": 82.953,
                "progressive_carries": 1.8249,
                "key_pass": 1.1848,
                "shots_off_target": 0.3322,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "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": "Roberto Fernández",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.0836,
                "tackles": 1.9945,
                "tackles_won": 1.2216,
                "clearances": 2.622,
                "aerial_won": 1.0893,
                "total_shots": 0.6152,
                "rating": 7.0549,
                "minutes": 90.0,
                "total_pass": 65.8388,
                "accurate_pass": 60.0148,
                "duels_won": 6.9569,
                "total_long_balls": 3.8217,
                "accurate_long_balls": 2.7275,
                "total_own_half_passes": 29.9108,
                "accurate_own_half_passes": 28.253,
                "total_opp_half_passes": 35.928,
                "accurate_opp_half_passes": 31.7619,
                "crosses_total": 0.8766,
                "crosses_accurate": 0.0,
                "touches": 92.5754,
                "possession_lost": 11.1379,
                "dispossessed": 1.109,
                "duels_lost": 5.1197,
                "aerial_lost": 1.2029,
                "total_contest": 2.4784,
                "won_contest": 1.4637,
                "ball_recovery": 7.0313,
                "challenges_lost": 1.2655,
                "fouls": 0.6944,
                "fouls_drawn": 1.2638,
                "blocks": 0.269,
                "goal_rate": 0.235,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.043,
                "expected_assists": 0.0735,
                "shots_on_target": 0.2829,
                "big_chances_created": 0.1666,
                "xgot": 0.0624,
                "ball_carries": 23.3731,
                "total_progression": 82.953,
                "progressive_carries": 1.8249,
                "key_pass": 1.1848,
                "shots_off_target": 0.3322,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "interceptions": 1.0836,
                "tackles": 1.9945,
                "tackles_won": 1.2216,
                "clearances": 2.622,
                "aerial_won": 1.0893,
                "total_shots": 0.6152,
                "rating": 7.0549,
                "minutes": 90.0,
                "total_pass": 65.8388,
                "accurate_pass": 60.0148,
                "duels_won": 6.9569,
                "total_long_balls": 3.8217,
                "accurate_long_balls": 2.7275,
                "total_own_half_passes": 29.9108,
                "accurate_own_half_passes": 28.253,
                "total_opp_half_passes": 35.928,
                "accurate_opp_half_passes": 31.7619,
                "crosses_total": 0.8766,
                "crosses_accurate": 0.0,
                "touches": 92.5754,
                "possession_lost": 11.1379,
                "dispossessed": 1.109,
                "duels_lost": 5.1197,
                "aerial_lost": 1.2029,
                "total_contest": 2.4784,
                "won_contest": 1.4637,
                "ball_recovery": 7.0313,
                "challenges_lost": 1.2655,
                "fouls": 0.6944,
                "fouls_drawn": 1.2638,
                "blocks": 0.269,
                "goal_rate": 0.235,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0542,
                "expected_assists": 0.0926,
                "shots_on_target": 0.2829,
                "big_chances_created": 0.1666,
                "xgot": 0.0786,
                "ball_carries": 23.3731,
                "total_progression": 82.953,
                "progressive_carries": 1.8249,
                "key_pass": 1.1848,
                "shots_off_target": 0.3322,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "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.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.043,
                  "after": 0.0542
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0735,
                  "after": 0.0926
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 81.0)",
              "stats": {
                "interceptions": 1.0836,
                "tackles": 1.9945,
                "tackles_won": 1.2216,
                "clearances": 2.622,
                "aerial_won": 1.0893,
                "total_shots": 0.6152,
                "rating": 7.0549,
                "minutes": 90.0,
                "total_pass": 65.8388,
                "accurate_pass": 60.0148,
                "duels_won": 6.9569,
                "total_long_balls": 3.8217,
                "accurate_long_balls": 2.7275,
                "total_own_half_passes": 29.9108,
                "accurate_own_half_passes": 28.253,
                "total_opp_half_passes": 35.928,
                "accurate_opp_half_passes": 31.7619,
                "crosses_total": 0.8766,
                "crosses_accurate": 0.0,
                "touches": 92.5754,
                "possession_lost": 11.1379,
                "dispossessed": 1.109,
                "duels_lost": 5.1197,
                "aerial_lost": 1.2029,
                "total_contest": 2.4784,
                "won_contest": 1.4637,
                "ball_recovery": 7.0313,
                "challenges_lost": 1.2655,
                "fouls": 0.6944,
                "fouls_drawn": 1.2638,
                "blocks": 0.269,
                "goal_rate": 0.235,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0542,
                "expected_assists": 0.0926,
                "shots_on_target": 0.2829,
                "big_chances_created": 0.1666,
                "xgot": 0.0786,
                "ball_carries": 23.3731,
                "total_progression": 82.953,
                "progressive_carries": 1.8249,
                "key_pass": 1.1848,
                "shots_off_target": 0.3322,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 416,
                "fifa_rank": 500.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.0836,
                "tackles": 1.9945,
                "tackles_won": 1.2216,
                "clearances": 2.622,
                "aerial_won": 1.0893,
                "total_shots": 0.6152,
                "rating": 7.0549,
                "minutes": 90.0,
                "total_pass": 65.8388,
                "accurate_pass": 60.0148,
                "duels_won": 6.9569,
                "total_long_balls": 3.8217,
                "accurate_long_balls": 2.7275,
                "total_own_half_passes": 29.9108,
                "accurate_own_half_passes": 28.253,
                "total_opp_half_passes": 35.928,
                "accurate_opp_half_passes": 31.7619,
                "crosses_total": 0.8766,
                "crosses_accurate": 0.0,
                "touches": 92.5754,
                "possession_lost": 11.1379,
                "dispossessed": 1.109,
                "duels_lost": 5.1197,
                "aerial_lost": 1.2029,
                "total_contest": 2.4784,
                "won_contest": 1.4637,
                "ball_recovery": 7.0313,
                "challenges_lost": 1.2655,
                "fouls": 0.6944,
                "fouls_drawn": 1.2638,
                "blocks": 0.269,
                "goal_rate": 0.235,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0542,
                "expected_assists": 0.0926,
                "shots_on_target": 0.2829,
                "big_chances_created": 0.1666,
                "xgot": 0.0786,
                "ball_carries": 23.3731,
                "total_progression": 82.953,
                "progressive_carries": 1.8249,
                "key_pass": 1.1848,
                "shots_off_target": 0.3322,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "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.0528,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0528,
                "goal_rate": 0.235,
                "scorer_weight": 0.0678,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0345,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.0836,
                "tackles": 1.9945,
                "tackles_won": 1.2216,
                "clearances": 2.622,
                "aerial_won": 1.0893,
                "total_shots": 0.6152,
                "rating": 7.0549,
                "minutes": 90.0,
                "total_pass": 65.8388,
                "accurate_pass": 60.0148,
                "duels_won": 6.9569,
                "total_long_balls": 3.8217,
                "accurate_long_balls": 2.7275,
                "total_own_half_passes": 29.9108,
                "accurate_own_half_passes": 28.253,
                "total_opp_half_passes": 35.928,
                "accurate_opp_half_passes": 31.7619,
                "crosses_total": 0.8766,
                "crosses_accurate": 0.0,
                "touches": 92.5754,
                "possession_lost": 11.1379,
                "dispossessed": 1.109,
                "duels_lost": 5.1197,
                "aerial_lost": 1.2029,
                "total_contest": 2.4784,
                "won_contest": 1.4637,
                "ball_recovery": 7.0313,
                "challenges_lost": 1.2655,
                "fouls": 0.6944,
                "fouls_drawn": 1.2638,
                "blocks": 0.269,
                "goal_rate": 0.235,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0542,
                "expected_assists": 0.0926,
                "shots_on_target": 0.2829,
                "big_chances_created": 0.1666,
                "xgot": 0.0786,
                "ball_carries": 23.3731,
                "total_progression": 82.953,
                "progressive_carries": 1.8249,
                "key_pass": 1.1848,
                "shots_off_target": 0.3322,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Roberto Fernández",
                "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.0528,
                "projected_assists": 0,
                "assist_probability": 0.0884,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0884,
                "assist_rate": 0.0,
                "provider_weight": 0.0741,
                "squad_weight_total": 1.3182,
                "weight_share": 0.0562,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Luiz Júnior": {
          "player_id": 1066603,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 192,
          "market_value": 12400000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0177,
            "rating": 7.0776,
            "minutes": 5,
            "total_pass": 4,
            "accurate_pass": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "touches": 5,
            "clearances": 0,
            "ball_recovery": 1,
            "high_claims": 0,
            "punches": 0.2773,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.8502,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "bench_appearance_probability": 0.129,
            "bench_expected_minutes": 4.84,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.388,
            "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": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 5.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 15,
                "ball_recovery": 4,
                "goals_prevented": -1.7728
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 18,
                "clearances": 2,
                "ball_recovery": 8,
                "saves": 1,
                "goals_prevented": -0.2317
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 25,
                "ball_recovery": 5,
                "saves": 2,
                "goals_prevented": -1.1323
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 18,
                "ball_recovery": 6,
                "saves": 3,
                "goals_prevented": -0.6088
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083102,
              "match_date": "2026-04-12",
              "home_team": "Athletic Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 8.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 19,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 14,
                "saves": 5,
                "goals_prevented": 1.3408
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14081812,
              "match_date": "2026-04-06",
              "home_team": "Girona FC",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 20,
                "ball_recovery": 8,
                "saves": 2,
                "goals_prevented": -0.5786
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14081808,
              "match_date": "2026-03-20",
              "home_team": "Villarreal",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 6,
                "clearances": 4,
                "ball_recovery": 9,
                "saves": 3,
                "goals_prevented": 0.3769
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14081806,
              "match_date": "2026-03-13",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 16,
                "clearances": 1,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14081803,
              "match_date": "2026-03-08",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 13,
                "clearances": 3,
                "ball_recovery": 11,
                "saves": 6,
                "goals_prevented": 0.7456
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14081789,
              "match_date": "2026-02-28",
              "home_team": "FC Barcelona",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 10,
                "ball_recovery": 6,
                "saves": 4,
                "goals_prevented": -1.2781
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2073,
            "combined_rank_score": 790.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 339.0,
            "sofascore_rating": 6.9929,
            "sofascore_appearances": 28.0,
            "fifa_rank": 1241.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0776,
            "source_file": "data/player_rankings.csv",
            "player_name": "Luiz Júnior",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kim Jong-Seok",
                  "ranking": 2068
                },
                {
                  "player_name": "Ariel Cáceres",
                  "ranking": 2069
                },
                {
                  "player_name": "Lucas Zelarayán",
                  "ranking": 2070
                },
                {
                  "player_name": "Šime Gržan",
                  "ranking": 2071
                },
                {
                  "player_name": "Kaku",
                  "ranking": 2072
                }
              ],
              "lower": [
                {
                  "player_name": "Maximiliano Rodríguez",
                  "ranking": 2074
                },
                {
                  "player_name": "Abbos Gulomov",
                  "ranking": 2075
                },
                {
                  "player_name": "Chan-dong Lee",
                  "ranking": 2076
                },
                {
                  "player_name": "Leonardo Spinazzola",
                  "ranking": 2077
                },
                {
                  "player_name": "Toni Martínez",
                  "ranking": 2078
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 32,
          "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": 32,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 4.838865452352355,
            "bench_appearance_prob": 0.12903933874328888,
            "market_value_adjustment": 1.0018,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost G_service (32 historical appearances) to 4.8 expected mins (appearance prob 0.13)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.3923,
                "goals_prevented": 0.1038,
                "rating": 7.0776,
                "minutes": 28.5,
                "total_pass": 21.7857,
                "accurate_pass": 16.8137,
                "total_long_balls": 7.9087,
                "accurate_long_balls": 3.067,
                "touches": 30.646,
                "clearances": 1.3444,
                "ball_recovery": 7.6506,
                "high_claims": 1.1485,
                "punches": 1.6306,
                "aerial_won": 0.147,
                "sweeper_actions": 1.4583,
                "sweeper_accurate": 1.2888,
                "saves_inside_box": 1.1445,
                "possession_lost": 4.9983,
                "duels_won": 0.2114,
                "duels_lost": 0.1983,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0307,
                "fouls_drawn": 0.0826,
                "total_own_half_passes": 16.7615,
                "accurate_own_half_passes": 15.4017
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-30T10:03:31.159511+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 201,
                    "rows": 7335
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1508,
                    "rating": 5.3
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1282,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.109,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0787,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-04-06",
                    "opponent": "Girona FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-20",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-13",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0484,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-08",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-02-28",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "sweeper_actions_p90": 1.3731,
                  "accurateOwnHalfPasses": 15.4016,
                  "totalLongBalls": 7.9087,
                  "commanding_index": 1.2559,
                  "accurateKeeperSweeper": 1.2888,
                  "distribution_accuracy": 0.9008
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.392343759536743,
                    "model_output": 2.3923,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0453
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0393
                      },
                      {
                        "name": "save_contribution",
                        "importance": 0.038
                      },
                      {
                        "name": "saves",
                        "importance": 0.0361
                      },
                      {
                        "name": "commanding_index",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 2.9243,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.25
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.1088
                        },
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "contribution": -0.0366
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0302
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0228
                        }
                      ],
                      "others": -0.0836,
                      "total": 2.3923,
                      "log_link": true,
                      "margin_base": 1.07304,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.089362
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.04154
                        },
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "margin": -0.014355
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.012012
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.009174
                        }
                      ],
                      "others_margin": -0.034324
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.10379214584827423,
                    "model_output": 0.1038,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0462
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0392
                      },
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0391
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0381
                      },
                      {
                        "name": "punches",
                        "importance": 0.0369
                      }
                    ],
                    "decomposition": {
                      "base": -0.0231,
                      "items": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0626
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": 0.0355
                        },
                        {
                          "name": "goalsPrevented",
                          "contribution": 0.029
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0224
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0181
                        }
                      ],
                      "others": -0.0045,
                      "total": 0.1038,
                      "log_link": false,
                      "margin_base": -0.023055,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.062564
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": 0.03553
                        },
                        {
                          "name": "goalsPrevented",
                          "margin": 0.029047
                        },
                        {
                          "name": "rating",
                          "margin": 0.022429
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.018121
                        }
                      ],
                      "others_margin": -0.004603
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.0775885581970215,
                    "model_output": 7.0776,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalLongBalls",
                        "importance": 0.039
                      },
                      {
                        "name": "accurateKeeperSweeper",
                        "importance": 0.0364
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.036
                      },
                      {
                        "name": "totalKeeperSweeper",
                        "importance": 0.0357
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0356
                      }
                    ],
                    "decomposition": {
                      "base": 6.9903,
                      "items": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0497
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": 0.0378
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "contribution": -0.0239
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0239
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0214
                        }
                      ],
                      "others": -0.0216,
                      "total": 7.0776,
                      "log_link": false,
                      "margin_base": 6.99032,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.049656
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": 0.037785
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "margin": -0.023885
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.023869
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.021444
                        }
                      ],
                      "others_margin": -0.021599
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 32,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0018, quality 0.550)",
              "stats": {
                "saves": 2.3966,
                "goals_prevented": 0.104,
                "rating": 7.0776,
                "minutes": 28.5,
                "total_pass": 21.8249,
                "accurate_pass": 16.844,
                "total_long_balls": 7.9229,
                "accurate_long_balls": 3.0725,
                "touches": 30.7012,
                "clearances": 1.3468,
                "ball_recovery": 7.6644,
                "high_claims": 1.1506,
                "punches": 1.6335,
                "aerial_won": 0.1473,
                "sweeper_actions": 1.4609,
                "sweeper_accurate": 1.2911,
                "saves_inside_box": 1.1466,
                "possession_lost": 5.0073,
                "duels_won": 0.2118,
                "duels_lost": 0.1987,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0308,
                "fouls_drawn": 0.0827,
                "total_own_half_passes": 16.7917,
                "accurate_own_half_passes": 15.4294
              },
              "params": {
                "market_value_eur": 12400000,
                "quality_factor": 0.5502,
                "boost_factor": 1.0018,
                "reference_quality": 0.505,
                "history_matches": 32,
                "history_shrink": 0.1351,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 28.5 to 4.8 expected minutes (appearance prob 0.13)",
              "stats": {
                "saves": 0.4069,
                "goals_prevented": 0.0177,
                "rating": 7.0776,
                "minutes": 4.84,
                "total_pass": 3.7055,
                "accurate_pass": 2.8599,
                "total_long_balls": 1.3452,
                "accurate_long_balls": 0.5217,
                "touches": 5.2126,
                "clearances": 0.2287,
                "ball_recovery": 1.3013,
                "high_claims": 0.1954,
                "punches": 0.2773,
                "aerial_won": 0.025,
                "sweeper_actions": 0.248,
                "sweeper_accurate": 0.2192,
                "saves_inside_box": 0.1947,
                "possession_lost": 0.8502,
                "duels_won": 0.036,
                "duels_lost": 0.0337,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0052,
                "fouls_drawn": 0.014,
                "total_own_half_passes": 2.851,
                "accurate_own_half_passes": 2.6197,
                "bench_appearance_probability": 0.129,
                "bench_expected_minutes": 4.84
              },
              "params": {
                "expected_minutes": 4.84,
                "projection_minutes": 28.5,
                "minutes_scale": 0.1698,
                "appearance_probability": 0.129
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.4069,
                "goals_prevented": 0.0177,
                "rating": 7.0776,
                "minutes": 4.84,
                "total_pass": 3.7055,
                "accurate_pass": 2.8599,
                "total_long_balls": 1.3452,
                "accurate_long_balls": 0.5217,
                "touches": 5.2126,
                "clearances": 0.2287,
                "ball_recovery": 1.3013,
                "high_claims": 0.1954,
                "punches": 0.2773,
                "aerial_won": 0.025,
                "sweeper_actions": 0.248,
                "sweeper_accurate": 0.2192,
                "saves_inside_box": 0.1947,
                "possession_lost": 0.8502,
                "duels_won": 0.036,
                "duels_lost": 0.0337,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0052,
                "fouls_drawn": 0.014,
                "total_own_half_passes": 2.851,
                "accurate_own_half_passes": 2.6197,
                "bench_appearance_probability": 0.129,
                "bench_expected_minutes": 4.84
              },
              "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.4069,
                "goals_prevented": 0.0177,
                "rating": 7.0776,
                "minutes": 4.84,
                "total_pass": 3.7055,
                "accurate_pass": 2.8599,
                "total_long_balls": 1.3452,
                "accurate_long_balls": 0.5217,
                "touches": 5.2126,
                "clearances": 0.2287,
                "ball_recovery": 1.3013,
                "high_claims": 0.1954,
                "punches": 0.2773,
                "aerial_won": 0.025,
                "sweeper_actions": 0.248,
                "sweeper_accurate": 0.2192,
                "saves_inside_box": 0.1947,
                "possession_lost": 0.8502,
                "duels_won": 0.036,
                "duels_lost": 0.0337,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0052,
                "fouls_drawn": 0.014,
                "total_own_half_passes": 2.851,
                "accurate_own_half_passes": 2.6197,
                "bench_appearance_probability": 0.129,
                "bench_expected_minutes": 4.84,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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.129,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 78.0)",
              "stats": {
                "saves": 0.4069,
                "goals_prevented": 0.0177,
                "rating": 7.0776,
                "minutes": 4.84,
                "total_pass": 3.7055,
                "accurate_pass": 2.8599,
                "total_long_balls": 1.3452,
                "accurate_long_balls": 0.5217,
                "touches": 5.2126,
                "clearances": 0.2287,
                "ball_recovery": 1.3013,
                "high_claims": 0.1954,
                "punches": 0.2773,
                "aerial_won": 0.025,
                "sweeper_actions": 0.248,
                "sweeper_accurate": 0.2192,
                "saves_inside_box": 0.1947,
                "possession_lost": 0.8502,
                "duels_won": 0.036,
                "duels_lost": 0.0337,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0052,
                "fouls_drawn": 0.014,
                "total_own_half_passes": 2.851,
                "accurate_own_half_passes": 2.6197,
                "bench_appearance_probability": 0.129,
                "bench_expected_minutes": 4.84,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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": 78.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": 2073,
                "fifa_rank": 1241.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            }
          ]
        },
        "Carlos Romero": {
          "player_id": 1396048,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 20,
          "height": 174,
          "market_value": 24000000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7802,
            "minutes": 14,
            "total_pass": 21,
            "accurate_pass": 18,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 11,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 33,
            "possession_lost": 5.5317,
            "dispossessed": 0.4646,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0384,
            "goals": 0,
            "assist_rate": 0.0248,
            "assists": 0,
            "expected_goals": 0.0334,
            "expected_assists": 0.0363,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0738,
            "ball_carries": 9,
            "total_progression": 41,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.236,
            "bench_expected_minutes": 14.49,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.388,
            "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": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 34,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0783,
                "expected_assists": 0.0152,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 18,
                "accurate_pass": 16,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 27,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0754,
                "expected_assists": 0.0685,
                "total_shots": 1,
                "total_pass": 23,
                "accurate_pass": 19,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0367,
                "expected_assists": 0.0239,
                "total_shots": 1,
                "total_pass": 60,
                "accurate_pass": 54,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0469,
                "expected_assists": 0.053,
                "total_shots": 1,
                "total_pass": 57,
                "accurate_pass": 52,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0296,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 34,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.016,
                "expected_assists": 0.0973,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 50,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 12,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083719,
              "match_date": "2026-05-23",
              "home_team": "Espanyol",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1193,
                "expected_assists": 0.2291,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 42,
                "accurate_pass": 34,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 8,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 9.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0256,
                "expected_assists": 0.018,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 22,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 3,
                "duels_won": 8,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083629,
              "match_date": "2026-05-13",
              "home_team": "Espanyol",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0672,
                "expected_assists": 0.1447,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 44,
                "accurate_pass": 34,
                "key_pass": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083587,
              "match_date": "2026-05-09",
              "home_team": "Sevilla",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 75,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0131,
                "expected_assists": 0.0027,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 12,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1032,
            "combined_rank_score": 460.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 1.0,
            "fifa_rank": 764.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7802,
            "source_file": "data/player_rankings.csv",
            "player_name": "Carlos Romero",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mamadou Sangare",
                  "ranking": 1027
                },
                {
                  "player_name": "Azizbek  Pirmukhamedov",
                  "ranking": 1028
                },
                {
                  "player_name": "Jonas Urbig",
                  "ranking": 1029
                },
                {
                  "player_name": "James Donachie",
                  "ranking": 1030
                },
                {
                  "player_name": "Felipe Campos",
                  "ranking": 1031
                }
              ],
              "lower": [
                {
                  "player_name": "Shota Gvazava",
                  "ranking": 1033
                },
                {
                  "player_name": "Joachim Andersen",
                  "ranking": 1034
                },
                {
                  "player_name": "Alisson",
                  "ranking": 1035
                },
                {
                  "player_name": "Anthony Elanga",
                  "ranking": 1036
                },
                {
                  "player_name": "Sander Berge",
                  "ranking": 1037
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 42,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 42,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.48735814265611,
            "bench_appearance_prob": 0.236,
            "market_value_adjustment": 1.0052,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "Bench projection scaled from XGBoost D_service (42 historical appearances) to 14.5 expected mins (appearance prob 0.24); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3222,
                "tackles": 0.7446,
                "tackles_won": 0.5242,
                "clearances": 0.7522,
                "aerial_won": 0.2253,
                "total_shots": 0.4741,
                "rating": 6.7802,
                "minutes": 24.39,
                "total_pass": 35.5458,
                "accurate_pass": 30.5955,
                "duels_won": 4.0912,
                "total_long_balls": 2.2412,
                "accurate_long_balls": 1.2591,
                "total_own_half_passes": 13.8414,
                "accurate_own_half_passes": 12.4443,
                "total_opp_half_passes": 21.7044,
                "accurate_opp_half_passes": 18.1511,
                "crosses_total": 1.5174,
                "crosses_accurate": 0.215,
                "touches": 54.8039,
                "possession_lost": 9.2647,
                "dispossessed": 0.4622,
                "duels_lost": 2.6415,
                "aerial_lost": 0.4953,
                "total_contest": 2.1457,
                "won_contest": 1.3838,
                "ball_recovery": 4.3306,
                "challenges_lost": 0.6208,
                "fouls": 0.3317,
                "fouls_drawn": 0.8997,
                "blocks": 0.484,
                "goals": 0.0652,
                "goal_rate": 0.0652,
                "assists": 0.0422,
                "assist_rate": 0.0422,
                "expected_goals": 0.0559,
                "expected_assists": 0.0608,
                "shots_on_target": 0.3526,
                "big_chances_created": 0.0625,
                "xgot": 0.1237,
                "ball_carries": 15.5997,
                "total_progression": 69.4863,
                "progressive_carries": 2.1929,
                "key_pass": 0.7756,
                "shots_off_target": 0.1215
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.1502,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1276,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 9.7
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Sevilla",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 1.7251,
                  "aerialWon": 0.3646,
                  "totalClearance_p90": 2.2349,
                  "totalTackle": 1.5178,
                  "totalPass": 35.5458
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.3222125768661499,
                    "model_output": 0.3222,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4902
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0304
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0102
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0079
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0079
                        }
                      ],
                      "others": -0.0155,
                      "total": 0.3222,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.830965
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.083659
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.029797
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.023686
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.023585
                        }
                      ],
                      "others_margin": -0.047054
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.7446194291114807,
                    "model_output": 0.7446,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7534
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.0257
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0228
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0207
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0194
                        }
                      ],
                      "others": 0.0237,
                      "total": 0.7446,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.784684
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.039815
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.034117
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.029936
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.027257
                        }
                      ],
                      "others_margin": 0.032491
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.5241580009460449,
                    "model_output": 0.5242,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4465
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0175
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0164
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0161
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0148
                        }
                      ],
                      "others": 0.0898,
                      "total": 0.5242,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.750706
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.042786
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.038653
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.036469
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.033473
                        }
                      ],
                      "others_margin": 0.187895
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.7521504759788513,
                    "model_output": 0.7522,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0358
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.276
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0863
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0684
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0512
                        }
                      ],
                      "others": -0.1619,
                      "total": 0.7521,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.899535
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.220295
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.080145
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.068442
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.054504
                        }
                      ],
                      "others_margin": -0.19496
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.2253388613462448,
                    "model_output": 0.2253,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7923
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.2175
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0405
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.022
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0183
                        }
                      ],
                      "others": -0.0617,
                      "total": 0.2253,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.85593
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.464628
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.116755
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.069512
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.06175
                        }
                      ],
                      "others_margin": -0.241933
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.47412192821502686,
                    "model_output": 0.4741,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2329
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.189
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0234
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0221
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0221
                        }
                      ],
                      "others": 0.0161,
                      "total": 0.4741,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.232912
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.188963
                        },
                        {
                          "name": "rating",
                          "margin": 0.023408
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.022077
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.022073
                        }
                      ],
                      "others_margin": 0.016127
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.780176639556885,
                    "model_output": 6.7802,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0389
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0222
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0135
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0131
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0095
                        }
                      ],
                      "others": -0.0229,
                      "total": 6.7802,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.03894
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.022172
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.013515
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.013084
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.009538
                        }
                      ],
                      "others_margin": -0.023001
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 42,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0052, quality 0.669)",
              "stats": {
                "interceptions": 0.3239,
                "tackles": 0.7485,
                "tackles_won": 0.5269,
                "clearances": 0.7561,
                "aerial_won": 0.2265,
                "total_shots": 0.4766,
                "rating": 6.7802,
                "minutes": 24.39,
                "total_pass": 35.7306,
                "accurate_pass": 30.7546,
                "duels_won": 4.1125,
                "total_long_balls": 2.2529,
                "accurate_long_balls": 1.2656,
                "total_own_half_passes": 13.9134,
                "accurate_own_half_passes": 12.509,
                "total_opp_half_passes": 21.8173,
                "accurate_opp_half_passes": 18.2455,
                "crosses_total": 1.5253,
                "crosses_accurate": 0.2161,
                "touches": 55.0889,
                "possession_lost": 9.3129,
                "dispossessed": 0.4646,
                "duels_lost": 2.6552,
                "aerial_lost": 0.4979,
                "total_contest": 2.1569,
                "won_contest": 1.391,
                "ball_recovery": 4.3531,
                "challenges_lost": 0.624,
                "fouls": 0.3334,
                "fouls_drawn": 0.9044,
                "blocks": 0.4865,
                "goals": 0.0655,
                "goal_rate": 0.0655,
                "assists": 0.0424,
                "assist_rate": 0.0424,
                "expected_goals": 0.0562,
                "expected_assists": 0.0611,
                "shots_on_target": 0.3544,
                "big_chances_created": 0.0628,
                "xgot": 0.1243,
                "ball_carries": 15.6808,
                "total_progression": 69.8476,
                "progressive_carries": 2.2043,
                "key_pass": 0.7796,
                "shots_off_target": 0.1221
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0052,
                "reference_quality": 0.505,
                "history_matches": 42,
                "history_shrink": 0.1064,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0138)",
              "stats": {
                "interceptions": 0.3207,
                "tackles": 0.7485,
                "tackles_won": 0.5259,
                "clearances": 0.7561,
                "aerial_won": 0.2265,
                "total_shots": 0.4725,
                "rating": 6.7802,
                "minutes": 24.39,
                "total_pass": 35.7306,
                "accurate_pass": 30.7546,
                "duels_won": 4.1125,
                "total_long_balls": 2.2529,
                "accurate_long_balls": 1.2656,
                "total_own_half_passes": 13.9134,
                "accurate_own_half_passes": 12.509,
                "total_opp_half_passes": 21.8173,
                "accurate_opp_half_passes": 18.2455,
                "crosses_total": 1.5117,
                "crosses_accurate": 0.2161,
                "touches": 55.0889,
                "possession_lost": 9.3129,
                "dispossessed": 0.4646,
                "duels_lost": 2.6552,
                "aerial_lost": 0.4979,
                "total_contest": 2.1569,
                "won_contest": 1.391,
                "ball_recovery": 4.3531,
                "challenges_lost": 0.624,
                "fouls": 0.3313,
                "fouls_drawn": 0.9006,
                "blocks": 0.4865,
                "goals": 0.0646,
                "goal_rate": 0.0646,
                "assists": 0.0418,
                "assist_rate": 0.0418,
                "expected_goals": 0.0562,
                "expected_assists": 0.0611,
                "shots_on_target": 0.3495,
                "big_chances_created": 0.0628,
                "xgot": 0.1243,
                "ball_carries": 15.6808,
                "total_progression": 69.8476,
                "progressive_carries": 2.2043,
                "key_pass": 0.7796,
                "shots_off_target": 0.1221
              },
              "params": {
                "blend_weight": 0.0138,
                "history_matches": 42,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.271,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 1.5253,
                  "after": 1.5117
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 24.4 to 14.5 expected minutes (appearance prob 0.24)",
              "stats": {
                "interceptions": 0.1905,
                "tackles": 0.4446,
                "tackles_won": 0.3124,
                "clearances": 0.4491,
                "aerial_won": 0.1345,
                "total_shots": 0.2807,
                "rating": 6.7802,
                "minutes": 14.49,
                "total_pass": 21.2235,
                "accurate_pass": 18.2679,
                "duels_won": 2.4428,
                "total_long_balls": 1.3382,
                "accurate_long_balls": 0.7518,
                "total_own_half_passes": 8.2644,
                "accurate_own_half_passes": 7.4302,
                "total_opp_half_passes": 12.9592,
                "accurate_opp_half_passes": 10.8376,
                "crosses_total": 0.8979,
                "crosses_accurate": 0.1284,
                "touches": 32.7221,
                "possession_lost": 5.5317,
                "dispossessed": 0.4646,
                "duels_lost": 1.5772,
                "aerial_lost": 0.4979,
                "total_contest": 1.2812,
                "won_contest": 0.8262,
                "ball_recovery": 2.5857,
                "challenges_lost": 0.624,
                "fouls": 0.1968,
                "fouls_drawn": 0.5349,
                "blocks": 0.289,
                "goals": 0.0384,
                "goal_rate": 0.0384,
                "assists": 0.0248,
                "assist_rate": 0.0248,
                "expected_goals": 0.0334,
                "expected_assists": 0.0363,
                "shots_on_target": 0.2076,
                "big_chances_created": 0.0373,
                "xgot": 0.0738,
                "ball_carries": 9.3142,
                "total_progression": 41.4886,
                "progressive_carries": 1.3093,
                "key_pass": 0.4631,
                "shots_off_target": 0.0725,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49
              },
              "params": {
                "expected_minutes": 14.49,
                "projection_minutes": 24.39,
                "minutes_scale": 0.594,
                "appearance_probability": 0.236
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.1905,
                "tackles": 0.4446,
                "tackles_won": 0.3124,
                "clearances": 0.4491,
                "aerial_won": 0.1345,
                "total_shots": 0.2807,
                "rating": 6.7802,
                "minutes": 14.49,
                "total_pass": 21.2235,
                "accurate_pass": 18.2679,
                "duels_won": 2.4428,
                "total_long_balls": 1.3382,
                "accurate_long_balls": 0.7518,
                "total_own_half_passes": 8.2644,
                "accurate_own_half_passes": 7.4302,
                "total_opp_half_passes": 12.9592,
                "accurate_opp_half_passes": 10.8376,
                "crosses_total": 0.8979,
                "crosses_accurate": 0.1284,
                "touches": 32.7221,
                "possession_lost": 5.5317,
                "dispossessed": 0.4646,
                "duels_lost": 1.5772,
                "aerial_lost": 0.4979,
                "total_contest": 1.2812,
                "won_contest": 0.8262,
                "ball_recovery": 2.5857,
                "challenges_lost": 0.624,
                "fouls": 0.1968,
                "fouls_drawn": 0.5349,
                "blocks": 0.289,
                "goals": 0.0384,
                "goal_rate": 0.0384,
                "assists": 0.0248,
                "assist_rate": 0.0248,
                "expected_goals": 0.0334,
                "expected_assists": 0.0363,
                "shots_on_target": 0.2076,
                "big_chances_created": 0.0373,
                "xgot": 0.0738,
                "ball_carries": 9.3142,
                "total_progression": 41.4886,
                "progressive_carries": 1.3093,
                "key_pass": 0.4631,
                "shots_off_target": 0.0725,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.1905,
                "tackles": 0.4446,
                "tackles_won": 0.3124,
                "clearances": 0.4491,
                "aerial_won": 0.1345,
                "total_shots": 0.2807,
                "rating": 6.7802,
                "minutes": 14.49,
                "total_pass": 21.2235,
                "accurate_pass": 18.2679,
                "duels_won": 2.4428,
                "total_long_balls": 1.3382,
                "accurate_long_balls": 0.7518,
                "total_own_half_passes": 8.2644,
                "accurate_own_half_passes": 7.4302,
                "total_opp_half_passes": 12.9592,
                "accurate_opp_half_passes": 10.8376,
                "crosses_total": 0.8979,
                "crosses_accurate": 0.1284,
                "touches": 32.7221,
                "possession_lost": 5.5317,
                "dispossessed": 0.4646,
                "duels_lost": 1.5772,
                "aerial_lost": 0.4979,
                "total_contest": 1.2812,
                "won_contest": 0.8262,
                "ball_recovery": 2.5857,
                "challenges_lost": 0.624,
                "fouls": 0.1968,
                "fouls_drawn": 0.5349,
                "blocks": 0.289,
                "goal_rate": 0.0384,
                "goals": 0,
                "assist_rate": 0.0248,
                "assists": 0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0363,
                "shots_on_target": 0.2076,
                "big_chances_created": 0.0373,
                "xgot": 0.0738,
                "ball_carries": 9.3142,
                "total_progression": 41.4886,
                "progressive_carries": 1.3093,
                "key_pass": 0.4631,
                "shots_off_target": 0.0725,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.236,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 80.0)",
              "stats": {
                "interceptions": 0.1905,
                "tackles": 0.4446,
                "tackles_won": 0.3124,
                "clearances": 0.4491,
                "aerial_won": 0.1345,
                "total_shots": 0.2807,
                "rating": 6.7802,
                "minutes": 14.49,
                "total_pass": 21.2235,
                "accurate_pass": 18.2679,
                "duels_won": 2.4428,
                "total_long_balls": 1.3382,
                "accurate_long_balls": 0.7518,
                "total_own_half_passes": 8.2644,
                "accurate_own_half_passes": 7.4302,
                "total_opp_half_passes": 12.9592,
                "accurate_opp_half_passes": 10.8376,
                "crosses_total": 0.8979,
                "crosses_accurate": 0.1284,
                "touches": 32.7221,
                "possession_lost": 5.5317,
                "dispossessed": 0.4646,
                "duels_lost": 1.5772,
                "aerial_lost": 0.4979,
                "total_contest": 1.2812,
                "won_contest": 0.8262,
                "ball_recovery": 2.5857,
                "challenges_lost": 0.624,
                "fouls": 0.1968,
                "fouls_drawn": 0.5349,
                "blocks": 0.289,
                "goal_rate": 0.0384,
                "goals": 0,
                "assist_rate": 0.0248,
                "assists": 0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0363,
                "shots_on_target": 0.2076,
                "big_chances_created": 0.0373,
                "xgot": 0.0738,
                "ball_carries": 9.3142,
                "total_progression": 41.4886,
                "progressive_carries": 1.3093,
                "key_pass": 0.4631,
                "shots_off_target": 0.0725,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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": 80.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": 1032,
                "fifa_rank": 764.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            }
          ]
        },
        "Santiago Mouriño": {
          "player_id": 1468046,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 15,
          "height": 186,
          "market_value": 19400000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7657,
            "minutes": 14,
            "total_pass": 8,
            "accurate_pass": 7,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 6,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 1.5428,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.001,
            "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.232,
            "bench_expected_minutes": 14.32,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.388,
            "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": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0344,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 64,
                "accurate_pass": 58,
                "tackles": 2,
                "tackles_won": 0,
                "interceptions": 3,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 11,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 9,
                "clearances": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 10,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 76,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0209,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 41,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 62,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.051,
                "expected_assists": 0.1417,
                "total_shots": 1,
                "total_pass": 44,
                "accurate_pass": 38,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3351,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 37,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 88,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1233,
                "expected_assists": 0.0387,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 53,
                "accurate_pass": 45,
                "tackles": 5,
                "tackles_won": 4,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0155,
                "total_shots": 0,
                "total_pass": 75,
                "accurate_pass": 67,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0268,
                "expected_assists": 0.0129,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 48,
                "accurate_pass": 43,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083573,
              "match_date": "2026-05-10",
              "home_team": "Mallorca",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 32,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 5,
                "duels_won": 6,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2087,
            "combined_rank_score": 793.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 339.0,
            "sofascore_rating": 6.9929,
            "sofascore_appearances": 28.0,
            "fifa_rank": 1248.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7657,
            "source_file": "data/player_rankings.csv",
            "player_name": "Santiago Mouriño",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Shodiyor Shodiboev",
                  "ranking": 2082
                },
                {
                  "player_name": "Matija Rom",
                  "ranking": 2083
                },
                {
                  "player_name": "Franco Rami",
                  "ranking": 2084
                },
                {
                  "player_name": "Jon Aramburu",
                  "ranking": 2085
                },
                {
                  "player_name": "Nikita Haikin",
                  "ranking": 2086
                }
              ],
              "lower": [
                {
                  "player_name": "Mason Mount",
                  "ranking": 2088
                },
                {
                  "player_name": "Thomas Partey",
                  "ranking": 2089
                },
                {
                  "player_name": "Sukhrob Izzatov",
                  "ranking": 2090
                },
                {
                  "player_name": "Gyu-baeg Lee",
                  "ranking": 2091
                },
                {
                  "player_name": "Brian Oyola",
                  "ranking": 2092
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.776,
          "history_matches": 35,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 35,
            "data_confidence": 0.776,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.3154732112477,
            "bench_appearance_prob": 0.232,
            "market_value_adjustment": 1.0045,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.1733
            },
            "rationale": "Bench projection scaled from XGBoost D_service (35 historical appearances) to 14.3 expected mins (appearance prob 0.23); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3395,
                "tackles": 0.6154,
                "tackles_won": 0.3514,
                "clearances": 1.0341,
                "aerial_won": 0.4336,
                "total_shots": 0.1306,
                "rating": 6.7657,
                "minutes": 19.33,
                "total_pass": 10.9252,
                "accurate_pass": 9.413,
                "duels_won": 1.4538,
                "total_long_balls": 0.6696,
                "accurate_long_balls": 0.6696,
                "total_own_half_passes": 9.4713,
                "accurate_own_half_passes": 8.5209,
                "total_opp_half_passes": 1.4538,
                "accurate_opp_half_passes": 0.8921,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 16.6346,
                "possession_lost": 2.0739,
                "dispossessed": 0.0,
                "duels_lost": 0.5617,
                "aerial_lost": 0.2809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.9504,
                "challenges_lost": 0.2809,
                "fouls": 0.0,
                "fouls_drawn": 0.2809,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.2245,
                "total_progression": 4.2031,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1306
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1505,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1279,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1087,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Mallorca",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 2.9293,
                  "aerialWon": 1.0671,
                  "totalClearance_p90": 5.7997,
                  "totalTackle": 2.2746,
                  "totalPass": 39.3232
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.33954310417175293,
                    "model_output": 0.3395,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.514
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.009
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0089
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0071
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0069
                        }
                      ],
                      "others": -0.0289,
                      "total": 0.3395,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.895916
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.02577
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.025365
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.0198
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.018837
                        }
                      ],
                      "others_margin": -0.081504
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.6154016256332397,
                    "model_output": 0.6154,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8261
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0306
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0269
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0268
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.027
                        }
                      ],
                      "others": -0.0555,
                      "total": 0.6154,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.906785
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.053191
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.044553
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.042552
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.041008
                        }
                      ],
                      "others_margin": -0.086185
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.3514375686645508,
                    "model_output": 0.3514,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5208
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0227
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0208
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0153
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0097
                        }
                      ],
                      "others": 0.008,
                      "total": 0.3514,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.956758
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.067443
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.05803
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.042321
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.027834
                        }
                      ],
                      "others_margin": 0.023302
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.0340856313705444,
                    "model_output": 1.0341,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.2089
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0629
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0527
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0469
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0264
                        }
                      ],
                      "others": -0.1464,
                      "total": 1.0341,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.03194
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.052778
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.046471
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.041476
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.022575
                        }
                      ],
                      "others_margin": -0.132407
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.4336004853248596,
                    "model_output": 0.4336,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8102
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0772
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0281
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0162
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0104
                        }
                      ],
                      "others": -0.0581,
                      "total": 0.4336,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.887051
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.14618
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.055816
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.031833
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.020985
                        }
                      ],
                      "others_margin": -0.125756
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.13057886064052582,
                    "model_output": 0.1306,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2218
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0698
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0123
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.01
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0084
                        }
                      ],
                      "others": -0.0456,
                      "total": 0.1306,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.221836
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.069794
                        },
                        {
                          "name": "rating",
                          "margin": -0.012316
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.009974
                        },
                        {
                          "name": "touches",
                          "margin": -0.008354
                        }
                      ],
                      "others_margin": -0.045635
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7656569480896,
                    "model_output": 6.7657,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0256
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0183
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0146
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0133
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0105
                        }
                      ],
                      "others": -0.0133,
                      "total": 6.7657,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.02565
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.018258
                        },
                        {
                          "name": "rating",
                          "margin": 0.014587
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013346
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.010451
                        }
                      ],
                      "others_margin": -0.013257
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 35,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0045, quality 0.625)",
              "stats": {
                "interceptions": 0.3411,
                "tackles": 0.6182,
                "tackles_won": 0.353,
                "clearances": 1.0387,
                "aerial_won": 0.4356,
                "total_shots": 0.1312,
                "rating": 6.7657,
                "minutes": 19.33,
                "total_pass": 10.9744,
                "accurate_pass": 9.4554,
                "duels_won": 1.4603,
                "total_long_balls": 0.6726,
                "accurate_long_balls": 0.6726,
                "total_own_half_passes": 9.5139,
                "accurate_own_half_passes": 8.5592,
                "total_opp_half_passes": 1.4603,
                "accurate_opp_half_passes": 0.8961,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 16.7095,
                "possession_lost": 2.0832,
                "dispossessed": 0.0,
                "duels_lost": 0.5642,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.9547,
                "challenges_lost": 0.2822,
                "fouls": 0.0,
                "fouls_drawn": 0.2822,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.239,
                "total_progression": 4.222,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1312
              },
              "params": {
                "market_value_eur": 19400000,
                "quality_factor": 0.6251,
                "boost_factor": 1.0045,
                "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.0141)",
              "stats": {
                "interceptions": 0.3375,
                "tackles": 0.6182,
                "tackles_won": 0.3573,
                "clearances": 1.0387,
                "aerial_won": 0.4356,
                "total_shots": 0.1317,
                "rating": 6.7657,
                "minutes": 19.33,
                "total_pass": 10.9744,
                "accurate_pass": 9.4554,
                "duels_won": 1.4603,
                "total_long_balls": 0.6726,
                "accurate_long_balls": 0.6726,
                "total_own_half_passes": 9.5139,
                "accurate_own_half_passes": 8.5592,
                "total_opp_half_passes": 1.4603,
                "accurate_opp_half_passes": 0.8961,
                "crosses_total": 0.0023,
                "crosses_accurate": 0.0,
                "touches": 16.7095,
                "possession_lost": 2.0832,
                "dispossessed": 0.0,
                "duels_lost": 0.5642,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.9547,
                "challenges_lost": 0.2822,
                "fouls": 0.007,
                "fouls_drawn": 0.2817,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0014,
                "shots_on_target": 0.0011,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.239,
                "total_progression": 4.222,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1312
              },
              "params": {
                "blend_weight": 0.0141,
                "history_matches": 35,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2148,
                "prior_reliability": 0.1733,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.007
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.3 to 14.3 expected minutes (appearance prob 0.23)",
              "stats": {
                "interceptions": 0.2499,
                "tackles": 0.4578,
                "tackles_won": 0.2646,
                "clearances": 0.7692,
                "aerial_won": 0.3226,
                "total_shots": 0.098,
                "rating": 6.7657,
                "minutes": 14.32,
                "total_pass": 8.1275,
                "accurate_pass": 7.0025,
                "duels_won": 1.0815,
                "total_long_balls": 0.4981,
                "accurate_long_balls": 0.4981,
                "total_own_half_passes": 7.0458,
                "accurate_own_half_passes": 6.3388,
                "total_opp_half_passes": 1.0815,
                "accurate_opp_half_passes": 0.6636,
                "crosses_total": 0.0017,
                "crosses_accurate": 0.0,
                "touches": 12.3748,
                "possession_lost": 1.5428,
                "dispossessed": 0.0,
                "duels_lost": 0.4178,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.707,
                "challenges_lost": 0.2822,
                "fouls": 0.0052,
                "fouls_drawn": 0.2086,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.001,
                "shots_on_target": 0.0008,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.3987,
                "total_progression": 3.1267,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0972,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32
              },
              "params": {
                "expected_minutes": 14.32,
                "projection_minutes": 19.33,
                "minutes_scale": 0.7406,
                "appearance_probability": 0.232
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2499,
                "tackles": 0.4578,
                "tackles_won": 0.2646,
                "clearances": 0.7692,
                "aerial_won": 0.3226,
                "total_shots": 0.098,
                "rating": 6.7657,
                "minutes": 14.32,
                "total_pass": 8.1275,
                "accurate_pass": 7.0025,
                "duels_won": 1.0815,
                "total_long_balls": 0.4981,
                "accurate_long_balls": 0.4981,
                "total_own_half_passes": 7.0458,
                "accurate_own_half_passes": 6.3388,
                "total_opp_half_passes": 1.0815,
                "accurate_opp_half_passes": 0.6636,
                "crosses_total": 0.0017,
                "crosses_accurate": 0.0,
                "touches": 12.3748,
                "possession_lost": 1.5428,
                "dispossessed": 0.0,
                "duels_lost": 0.4178,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.707,
                "challenges_lost": 0.2822,
                "fouls": 0.0052,
                "fouls_drawn": 0.2086,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.001,
                "shots_on_target": 0.0008,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.3987,
                "total_progression": 3.1267,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0972,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.2499,
                "tackles": 0.4578,
                "tackles_won": 0.2646,
                "clearances": 0.7692,
                "aerial_won": 0.3226,
                "total_shots": 0.098,
                "rating": 6.7657,
                "minutes": 14.32,
                "total_pass": 8.1275,
                "accurate_pass": 7.0025,
                "duels_won": 1.0815,
                "total_long_balls": 0.4981,
                "accurate_long_balls": 0.4981,
                "total_own_half_passes": 7.0458,
                "accurate_own_half_passes": 6.3388,
                "total_opp_half_passes": 1.0815,
                "accurate_opp_half_passes": 0.6636,
                "crosses_total": 0.0017,
                "crosses_accurate": 0.0,
                "touches": 12.3748,
                "possession_lost": 1.5428,
                "dispossessed": 0.0,
                "duels_lost": 0.4178,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.707,
                "challenges_lost": 0.2822,
                "fouls": 0.0052,
                "fouls_drawn": 0.2086,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.001,
                "shots_on_target": 0.0008,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.3987,
                "total_progression": 3.1267,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0972,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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.232,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 78.0)",
              "stats": {
                "interceptions": 0.2499,
                "tackles": 0.4578,
                "tackles_won": 0.2646,
                "clearances": 0.7692,
                "aerial_won": 0.3226,
                "total_shots": 0.098,
                "rating": 6.7657,
                "minutes": 14.32,
                "total_pass": 8.1275,
                "accurate_pass": 7.0025,
                "duels_won": 1.0815,
                "total_long_balls": 0.4981,
                "accurate_long_balls": 0.4981,
                "total_own_half_passes": 7.0458,
                "accurate_own_half_passes": 6.3388,
                "total_opp_half_passes": 1.0815,
                "accurate_opp_half_passes": 0.6636,
                "crosses_total": 0.0017,
                "crosses_accurate": 0.0,
                "touches": 12.3748,
                "possession_lost": 1.5428,
                "dispossessed": 0.0,
                "duels_lost": 0.4178,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.707,
                "challenges_lost": 0.2822,
                "fouls": 0.0052,
                "fouls_drawn": 0.2086,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.001,
                "shots_on_target": 0.0008,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.3987,
                "total_progression": 3.1267,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0972,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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": 78.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2087,
                "fifa_rank": 1248.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            }
          ]
        },
        "Pape Gueye": {
          "player_id": 879694,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 18,
          "height": 187,
          "market_value": 39000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0372,
            "assist_rate": 0.0455,
            "assists": 0,
            "expected_goals": 0.0594,
            "goal_rate": 0.1024,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.9444,
            "minutes": 23,
            "total_pass": 16,
            "accurate_pass": 13,
            "duels_won": 1,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 9,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 21,
            "possession_lost": 5.3921,
            "dispossessed": 0.4185,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2151,
            "ball_carries": 11,
            "total_progression": 41,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.334,
            "bench_expected_minutes": 23.31,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.388,
            "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": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 79,
                "rating": 6.4,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3051,
                "expected_assists": 0.0709,
                "total_shots": 6,
                "shots_on_target": 0,
                "shots_off_target": 5,
                "total_pass": 57,
                "accurate_pass": 51,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 2,
                "ball_recovery": 4,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0119,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0789,
                "expected_assists": 0.0297,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 46,
                "accurate_pass": 40,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 87,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0742,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 46,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 53,
                "rating": 9.0,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.1104,
                "expected_assists": 0.0512,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 47,
                "accurate_pass": 41,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 54,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0333,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 35,
                "key_pass": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 62,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.029,
                "expected_assists": 0.1173,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 59,
                "accurate_pass": 52,
                "key_pass": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1195,
                "total_shots": 0,
                "total_pass": 85,
                "accurate_pass": 68,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0469,
                "expected_assists": 0.0538,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 70,
                "accurate_pass": 63,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0217,
                "expected_assists": 0.1321,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 56,
                "accurate_pass": 47,
                "key_pass": 2,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 826,
            "combined_rank_score": 394.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 30.0,
            "sofascore_rating": 8.0,
            "sofascore_appearances": 1.0,
            "fifa_rank": 758.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9444,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pape Gueye",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Florian Thauvin",
                  "ranking": 821
                },
                {
                  "player_name": "Corentin Tolisso",
                  "ranking": 822
                },
                {
                  "player_name": "José María Giménez",
                  "ranking": 823
                },
                {
                  "player_name": "Dean Henderson",
                  "ranking": 824
                },
                {
                  "player_name": "Palhinha",
                  "ranking": 825
                }
              ],
              "lower": [
                {
                  "player_name": "Caoimhin Kelleher",
                  "ranking": 827
                },
                {
                  "player_name": "Antonio Raíllo",
                  "ranking": 828
                },
                {
                  "player_name": "Dilshod Akhmadaliev",
                  "ranking": 829
                },
                {
                  "player_name": "Botirali Ergashev",
                  "ranking": 830
                },
                {
                  "player_name": "Mathias Jensen",
                  "ranking": 831
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 40,
          "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": 40,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 23.31076870157783,
            "bench_appearance_prob": 0.334,
            "market_value_adjustment": 1.009,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.3333333333333333,
              "assists_per90": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "Bench projection scaled from XGBoost M_service (40 historical appearances) to 23.3 expected mins (appearance prob 0.33); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4821,
                "expected_assists": 0.0414,
                "assists": 0.0516,
                "assist_rate": 0.0516,
                "expected_goals": 0.0662,
                "goals": 0.1144,
                "goal_rate": 0.1144,
                "shots_on_target": 0.2333,
                "total_shots": 0.6226,
                "rating": 6.9444,
                "minutes": 26.21,
                "total_pass": 18.1586,
                "accurate_pass": 13.9435,
                "duels_won": 1.0446,
                "total_long_balls": 4.4516,
                "accurate_long_balls": 2.4366,
                "total_own_half_passes": 5.0765,
                "accurate_own_half_passes": 4.0279,
                "total_opp_half_passes": 13.0822,
                "accurate_opp_half_passes": 9.9157,
                "crosses_total": 0.3116,
                "crosses_accurate": 0.2047,
                "touches": 23.8879,
                "possession_lost": 6.0086,
                "dispossessed": 0.4148,
                "duels_lost": 2.1898,
                "aerial_won": 0.2137,
                "aerial_lost": 0.7006,
                "interceptions": 0.3787,
                "tackles_won": 0.0,
                "tackles": 0.1479,
                "clearances": 0.7434,
                "total_contest": 0.7313,
                "won_contest": 0.3526,
                "challenges_lost": 0.0,
                "fouls": 0.6957,
                "fouls_drawn": 0.3304,
                "blocks": 0.2736,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2397,
                "ball_carries": 12.3858,
                "total_progression": 45.4825,
                "progressive_carries": 1.4595,
                "shots_off_target": 0.3893
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 87.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 53.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 9.0
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 54.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 8.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 1.9738,
                  "creative_index": 0.4082,
                  "expectedGoals": 0.1738,
                  "expectedAssists": 0.0596,
                  "totalOppositionHalfPasses": 29.9519
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.4820971190929413,
                    "model_output": 0.4821,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4192
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0377
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0257
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0185
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0158
                        }
                      ],
                      "others": 0.0771,
                      "total": 0.4821,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.636452
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.083496
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.061078
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.046493
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.039854
                        }
                      ],
                      "others_margin": 0.174281
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04140479490160942,
                    "model_output": 0.0414,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0416
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0047
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.002
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0017
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0016
                        }
                      ],
                      "others": 0.0007,
                      "total": 0.0414,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.672856
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.115366
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.050802
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.041077
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.038518
                        }
                      ],
                      "others_margin": 0.016281
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.051566142588853836,
                    "model_output": 0.0516,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0227
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0095
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0027
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0024
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0021
                        }
                      ],
                      "others": -0.0036,
                      "total": 0.0516,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.310162
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.165125
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.049035
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.044958
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.039546
                        }
                      ],
                      "others_margin": -0.068391
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06619168817996979,
                    "model_output": 0.0662,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0415
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0154
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0159
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0058
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0053
                        }
                      ],
                      "others": -0.0145,
                      "total": 0.0662,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.605048
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.26932
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.218247
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.073938
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.068024
                        }
                      ],
                      "others_margin": -0.199626
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.11435697972774506,
                    "model_output": 0.1144,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0289
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0248
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0169
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0096
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.009
                        }
                      ],
                      "others": 0.006,
                      "total": 0.1144,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.36316
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.318226
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.17092
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.085497
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.07981
                        }
                      ],
                      "others_margin": 0.053929
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.23328983783721924,
                    "model_output": 0.2333,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1467
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0472
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0392
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0179
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0102
                        }
                      ],
                      "others": 0.0034,
                      "total": 0.2333,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.618009
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.243117
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.164712
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.07212
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.043444
                        }
                      ],
                      "others_margin": 0.015043
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6226309537887573,
                    "model_output": 0.6226,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5968
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.3555
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0593
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0234
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0217
                        }
                      ],
                      "others": -0.0158,
                      "total": 0.6226,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.596844
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.355496
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.059274
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.023408
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.021655
                        }
                      ],
                      "others_margin": -0.015793
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.944425582885742,
                    "model_output": 6.9444,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0943
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0817
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0526
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0189
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.016
                        }
                      ],
                      "others": 0.0143,
                      "total": 6.9444,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.094345
                        },
                        {
                          "name": "rating",
                          "margin": 0.081717
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.052621
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.018874
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.015998
                        }
                      ],
                      "others_margin": 0.014365
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 40,
                  "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.0090, quality 0.775)",
              "stats": {
                "key_pass": 0.4864,
                "expected_assists": 0.0418,
                "assists": 0.052,
                "assist_rate": 0.052,
                "expected_goals": 0.0668,
                "goals": 0.1154,
                "goal_rate": 0.1154,
                "shots_on_target": 0.2354,
                "total_shots": 0.6282,
                "rating": 6.9444,
                "minutes": 26.21,
                "total_pass": 18.322,
                "accurate_pass": 14.069,
                "duels_won": 1.054,
                "total_long_balls": 4.4917,
                "accurate_long_balls": 2.4585,
                "total_own_half_passes": 5.1222,
                "accurate_own_half_passes": 4.0642,
                "total_opp_half_passes": 13.1999,
                "accurate_opp_half_passes": 10.0049,
                "crosses_total": 0.3144,
                "crosses_accurate": 0.2065,
                "touches": 24.1029,
                "possession_lost": 6.0627,
                "dispossessed": 0.4185,
                "duels_lost": 2.2095,
                "aerial_won": 0.2156,
                "aerial_lost": 0.7069,
                "interceptions": 0.3821,
                "tackles_won": 0.0,
                "tackles": 0.1492,
                "clearances": 0.7501,
                "total_contest": 0.7379,
                "won_contest": 0.3558,
                "challenges_lost": 0.0,
                "fouls": 0.702,
                "fouls_drawn": 0.3334,
                "blocks": 0.2761,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2419,
                "ball_carries": 12.4973,
                "total_progression": 45.8918,
                "progressive_carries": 1.4726,
                "shots_off_target": 0.3928
              },
              "params": {
                "market_value_eur": 39000000,
                "quality_factor": 0.7754,
                "boost_factor": 1.009,
                "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.0144)",
              "stats": {
                "key_pass": 0.4864,
                "expected_assists": 0.0418,
                "assists": 0.0512,
                "assist_rate": 0.0512,
                "expected_goals": 0.0668,
                "goals": 0.1151,
                "goal_rate": 0.1151,
                "shots_on_target": 0.2334,
                "total_shots": 0.6233,
                "rating": 6.9444,
                "minutes": 26.21,
                "total_pass": 18.322,
                "accurate_pass": 14.069,
                "duels_won": 1.054,
                "total_long_balls": 4.4917,
                "accurate_long_balls": 2.4585,
                "total_own_half_passes": 5.1222,
                "accurate_own_half_passes": 4.0642,
                "total_opp_half_passes": 13.1999,
                "accurate_opp_half_passes": 10.0049,
                "crosses_total": 0.3113,
                "crosses_accurate": 0.2065,
                "touches": 24.1029,
                "possession_lost": 6.0627,
                "dispossessed": 0.4185,
                "duels_lost": 2.2095,
                "aerial_won": 0.2156,
                "aerial_lost": 0.7069,
                "interceptions": 0.3822,
                "tackles_won": 0.0028,
                "tackles": 0.1492,
                "clearances": 0.7501,
                "total_contest": 0.7379,
                "won_contest": 0.3558,
                "challenges_lost": 0.0,
                "fouls": 0.6975,
                "fouls_drawn": 0.337,
                "blocks": 0.2761,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2419,
                "ball_carries": 12.4973,
                "total_progression": 45.8918,
                "progressive_carries": 1.4726,
                "shots_off_target": 0.3928
              },
              "params": {
                "blend_weight": 0.0144,
                "history_matches": 40,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2912,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Villarreal"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 26.2 to 23.3 expected minutes (appearance prob 0.33)",
              "stats": {
                "key_pass": 0.4326,
                "expected_assists": 0.0372,
                "assists": 0.0455,
                "assist_rate": 0.0455,
                "expected_goals": 0.0594,
                "goals": 0.1024,
                "goal_rate": 0.1024,
                "shots_on_target": 0.2076,
                "total_shots": 0.557,
                "rating": 6.9444,
                "minutes": 23.31,
                "total_pass": 16.2953,
                "accurate_pass": 12.5128,
                "duels_won": 0.9374,
                "total_long_balls": 3.9948,
                "accurate_long_balls": 2.1866,
                "total_own_half_passes": 4.5556,
                "accurate_own_half_passes": 3.6146,
                "total_opp_half_passes": 11.7398,
                "accurate_opp_half_passes": 8.8982,
                "crosses_total": 0.2769,
                "crosses_accurate": 0.1837,
                "touches": 21.4367,
                "possession_lost": 5.3921,
                "dispossessed": 0.4185,
                "duels_lost": 1.9651,
                "aerial_won": 0.1918,
                "aerial_lost": 0.7069,
                "interceptions": 0.3399,
                "tackles_won": 0.0025,
                "tackles": 0.1327,
                "clearances": 0.6671,
                "total_contest": 0.6563,
                "won_contest": 0.3164,
                "challenges_lost": 0.0,
                "fouls": 0.6203,
                "fouls_drawn": 0.2997,
                "blocks": 0.2456,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2151,
                "ball_carries": 11.1149,
                "total_progression": 40.8155,
                "progressive_carries": 1.3097,
                "shots_off_target": 0.3494,
                "bench_appearance_probability": 0.334,
                "bench_expected_minutes": 23.31
              },
              "params": {
                "expected_minutes": 23.31,
                "projection_minutes": 26.21,
                "minutes_scale": 0.8894,
                "appearance_probability": 0.334
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.4326,
                "expected_assists": 0.0372,
                "assists": 0.0455,
                "assist_rate": 0.0455,
                "expected_goals": 0.0594,
                "goals": 0.1024,
                "goal_rate": 0.1024,
                "shots_on_target": 0.2076,
                "total_shots": 0.557,
                "rating": 6.9444,
                "minutes": 23.31,
                "total_pass": 16.2953,
                "accurate_pass": 12.5128,
                "duels_won": 0.9374,
                "total_long_balls": 3.9948,
                "accurate_long_balls": 2.1866,
                "total_own_half_passes": 4.5556,
                "accurate_own_half_passes": 3.6146,
                "total_opp_half_passes": 11.7398,
                "accurate_opp_half_passes": 8.8982,
                "crosses_total": 0.2769,
                "crosses_accurate": 0.1837,
                "touches": 21.4367,
                "possession_lost": 5.3921,
                "dispossessed": 0.4185,
                "duels_lost": 1.9651,
                "aerial_won": 0.1918,
                "aerial_lost": 0.7069,
                "interceptions": 0.3399,
                "tackles_won": 0.0025,
                "tackles": 0.1327,
                "clearances": 0.6671,
                "total_contest": 0.6563,
                "won_contest": 0.3164,
                "challenges_lost": 0.0,
                "fouls": 0.6203,
                "fouls_drawn": 0.2997,
                "blocks": 0.2456,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2151,
                "ball_carries": 11.1149,
                "total_progression": 40.8155,
                "progressive_carries": 1.3097,
                "shots_off_target": 0.3494,
                "bench_appearance_probability": 0.334,
                "bench_expected_minutes": 23.31
              },
              "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.4326,
                "expected_assists": 0.0372,
                "assist_rate": 0.0455,
                "assists": 0,
                "expected_goals": 0.0594,
                "goal_rate": 0.1024,
                "goals": 0,
                "shots_on_target": 0.2076,
                "total_shots": 0.557,
                "rating": 6.9444,
                "minutes": 23.31,
                "total_pass": 16.2953,
                "accurate_pass": 12.5128,
                "duels_won": 0.9374,
                "total_long_balls": 3.9948,
                "accurate_long_balls": 2.1866,
                "total_own_half_passes": 4.5556,
                "accurate_own_half_passes": 3.6146,
                "total_opp_half_passes": 11.7398,
                "accurate_opp_half_passes": 8.8982,
                "crosses_total": 0.2769,
                "crosses_accurate": 0.1837,
                "touches": 21.4367,
                "possession_lost": 5.3921,
                "dispossessed": 0.4185,
                "duels_lost": 1.9651,
                "aerial_won": 0.1918,
                "aerial_lost": 0.7069,
                "interceptions": 0.3399,
                "tackles_won": 0.0025,
                "tackles": 0.1327,
                "clearances": 0.6671,
                "total_contest": 0.6563,
                "won_contest": 0.3164,
                "challenges_lost": 0.0,
                "fouls": 0.6203,
                "fouls_drawn": 0.2997,
                "blocks": 0.2456,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2151,
                "ball_carries": 11.1149,
                "total_progression": 40.8155,
                "progressive_carries": 1.3097,
                "shots_off_target": 0.3494,
                "bench_appearance_probability": 0.334,
                "bench_expected_minutes": 23.31,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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.334,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 80.0)",
              "stats": {
                "key_pass": 0.4326,
                "expected_assists": 0.0372,
                "assist_rate": 0.0455,
                "assists": 0,
                "expected_goals": 0.0594,
                "goal_rate": 0.1024,
                "goals": 0,
                "shots_on_target": 0.2076,
                "total_shots": 0.557,
                "rating": 6.9444,
                "minutes": 23.31,
                "total_pass": 16.2953,
                "accurate_pass": 12.5128,
                "duels_won": 0.9374,
                "total_long_balls": 3.9948,
                "accurate_long_balls": 2.1866,
                "total_own_half_passes": 4.5556,
                "accurate_own_half_passes": 3.6146,
                "total_opp_half_passes": 11.7398,
                "accurate_opp_half_passes": 8.8982,
                "crosses_total": 0.2769,
                "crosses_accurate": 0.1837,
                "touches": 21.4367,
                "possession_lost": 5.3921,
                "dispossessed": 0.4185,
                "duels_lost": 1.9651,
                "aerial_won": 0.1918,
                "aerial_lost": 0.7069,
                "interceptions": 0.3399,
                "tackles_won": 0.0025,
                "tackles": 0.1327,
                "clearances": 0.6671,
                "total_contest": 0.6563,
                "won_contest": 0.3164,
                "challenges_lost": 0.0,
                "fouls": 0.6203,
                "fouls_drawn": 0.2997,
                "blocks": 0.2456,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2151,
                "ball_carries": 11.1149,
                "total_progression": 40.8155,
                "progressive_carries": 1.3097,
                "shots_off_target": 0.3494,
                "bench_appearance_probability": 0.334,
                "bench_expected_minutes": 23.31,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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": 80.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 826,
                "fifa_rank": 758.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            }
          ]
        },
        "Nathan-Dylan Saliba": {
          "player_id": 1093229,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 173,
          "market_value": 13800000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.023,
            "assist_rate": 0.0353,
            "assists": 0,
            "expected_goals": 0.0291,
            "goal_rate": 0.0412,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7846,
            "minutes": 22,
            "total_pass": 22,
            "accurate_pass": 20,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 14,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 28,
            "possession_lost": 3.3992,
            "dispossessed": 0.8995,
            "duels_lost": 3,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 41,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.522,
            "bench_expected_minutes": 22.48,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.388,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 24,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0299,
                "expected_assists": 0.0158,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 13,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 34,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0266,
                "total_shots": 1,
                "total_pass": 31,
                "accurate_pass": 28,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1143,
                "expected_assists": 0.0184,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 36,
                "tackles": 5,
                "tackles_won": 2,
                "interceptions": 3,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 80,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0195,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 39,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 36,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0253,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 32,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1151,
                "expected_assists": 0.1364,
                "total_shots": 1,
                "total_pass": 73,
                "accurate_pass": 67,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 10,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4406,
            "combined_rank_score": 2430.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4706.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7846,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nathan-Dylan Saliba",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Francés",
                  "ranking": 4401
                },
                {
                  "player_name": "Florin Tănase",
                  "ranking": 4402
                },
                {
                  "player_name": "Víctor García",
                  "ranking": 4403
                },
                {
                  "player_name": "Kings Kangwa",
                  "ranking": 4404
                },
                {
                  "player_name": "Soualiho Meïté",
                  "ranking": 4405
                }
              ],
              "lower": [
                {
                  "player_name": "Luca Koleosho",
                  "ranking": 4407
                },
                {
                  "player_name": "Anastasios Bakasetas",
                  "ranking": 4408
                },
                {
                  "player_name": "Rick van Drongelen",
                  "ranking": 4409
                },
                {
                  "player_name": "Rodrigo Echeverría",
                  "ranking": 4410
                },
                {
                  "player_name": "Romaine Mundle",
                  "ranking": 4411
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.625,
          "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.625,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.48122902993721,
            "bench_appearance_prob": 0.5218740468153277,
            "market_value_adjustment": 1.0083,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (6 historical appearances) to 22.5 expected mins (appearance prob 0.52)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3911,
                "expected_assists": 0.0264,
                "assists": 0.0404,
                "assist_rate": 0.0404,
                "expected_goals": 0.0334,
                "goals": 0.0473,
                "goal_rate": 0.0473,
                "shots_on_target": 0.1162,
                "total_shots": 0.4329,
                "rating": 6.7846,
                "minutes": 26.0,
                "total_pass": 25.688,
                "accurate_pass": 23.2925,
                "duels_won": 1.0,
                "total_long_balls": 0.6113,
                "accurate_long_balls": 0.3304,
                "total_own_half_passes": 7.8902,
                "accurate_own_half_passes": 7.5598,
                "total_opp_half_passes": 17.7979,
                "accurate_opp_half_passes": 15.7328,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 31.621,
                "possession_lost": 3.8989,
                "dispossessed": 0.8921,
                "duels_lost": 3.8834,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3304,
                "total_contest": 0.2809,
                "won_contest": 0.0,
                "challenges_lost": 1.1079,
                "fouls": 1.6025,
                "fouls_drawn": 1.0,
                "blocks": 0.3887,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.4947,
                "total_progression": 47.4374,
                "progressive_carries": 0.3887,
                "shots_off_target": 0.3167
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.2408,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.2047,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.174,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1479,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.1257,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1069,
                    "rating": 7.7
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 0.0,
                  "totalShots": 1.0744,
                  "creative_index": 0.0626,
                  "expectedGoals": 0.0434,
                  "expectedAssists": 0.0331,
                  "totalOppositionHalfPasses": 22.024
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.39113521575927734,
                    "model_output": 0.3911,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3926
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0469
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0411
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0364
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0152
                        }
                      ],
                      "others": 0.0026,
                      "total": 0.3911,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.581562
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.098991
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.095633
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.093046
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.039895
                        }
                      ],
                      "others_margin": 0.006861
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.026425188407301903,
                    "model_output": 0.0264,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0364
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0097
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0048
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0028
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0023
                        }
                      ],
                      "others": -0.0025,
                      "total": 0.0264,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.558797
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.223438
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.132263
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.085233
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.076712
                        }
                      ],
                      "others_margin": -0.091216
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04041795805096626,
                    "model_output": 0.0404,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0187
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0108
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0038
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0035
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0057,
                      "total": 0.0404,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.248982
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.177886
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.07062
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.070033
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.043679
                        }
                      ],
                      "others_margin": -0.132446
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.033355288207530975,
                    "model_output": 0.0334,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0355
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0078
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0036
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0027
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0025
                        }
                      ],
                      "others": -0.0059,
                      "total": 0.0334,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.491995
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.149601
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.077578
                        },
                        {
                          "name": "goals",
                          "margin": -0.063354
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.062365
                        }
                      ],
                      "others_margin": -0.163468
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.047280844300985336,
                    "model_output": 0.0473,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0313
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0115
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0067
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0059
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0053
                        }
                      ],
                      "others": -0.01,
                      "total": 0.0473,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.399516
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.165624
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.093704
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.090907
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.089028
                        }
                      ],
                      "others_margin": -0.19009
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.11616592854261398,
                    "model_output": 0.1162,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1406
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0156
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0135
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0113
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0088
                        }
                      ],
                      "others": -0.0435,
                      "total": 0.1162,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.58291
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.084317
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.072418
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.065186
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.053477
                        }
                      ],
                      "others_margin": -0.318291
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.432844877243042,
                    "model_output": 0.4328,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3916
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0423
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0325
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.028
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0216
                        }
                      ],
                      "others": -0.1199,
                      "total": 0.4328,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.391603
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.042338
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.032527
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.02804
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.021583
                        }
                      ],
                      "others_margin": -0.119848
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.784632682800293,
                    "model_output": 6.7846,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.105
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0504
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0303
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0248
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0159
                        }
                      ],
                      "others": -0.0264,
                      "total": 6.7846,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.105005
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.050385
                        },
                        {
                          "name": "rating",
                          "margin": -0.030324
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.024796
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.015921
                        }
                      ],
                      "others_margin": -0.026336
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 6,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0083, quality 0.566)",
              "stats": {
                "key_pass": 0.3944,
                "expected_assists": 0.0266,
                "assists": 0.0408,
                "assist_rate": 0.0408,
                "expected_goals": 0.0336,
                "goals": 0.0477,
                "goal_rate": 0.0477,
                "shots_on_target": 0.1171,
                "total_shots": 0.4365,
                "rating": 6.7846,
                "minutes": 26.0,
                "total_pass": 25.9012,
                "accurate_pass": 23.4858,
                "duels_won": 1.0083,
                "total_long_balls": 0.6164,
                "accurate_long_balls": 0.3331,
                "total_own_half_passes": 7.9557,
                "accurate_own_half_passes": 7.6225,
                "total_opp_half_passes": 17.9456,
                "accurate_opp_half_passes": 15.8634,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 31.8835,
                "possession_lost": 3.9313,
                "dispossessed": 0.8995,
                "duels_lost": 3.9156,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3331,
                "total_contest": 0.2832,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.6158,
                "fouls_drawn": 1.0083,
                "blocks": 0.3919,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.5901,
                "total_progression": 47.8311,
                "progressive_carries": 0.3919,
                "shots_off_target": 0.3193
              },
              "params": {
                "market_value_eur": 13800000,
                "quality_factor": 0.566,
                "boost_factor": 1.0083,
                "reference_quality": 0.505,
                "history_matches": 6,
                "history_shrink": 0.4545,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 26.0 to 22.5 expected minutes (appearance prob 0.52)",
              "stats": {
                "key_pass": 0.341,
                "expected_assists": 0.023,
                "assists": 0.0353,
                "assist_rate": 0.0353,
                "expected_goals": 0.0291,
                "goals": 0.0412,
                "goal_rate": 0.0412,
                "shots_on_target": 0.1013,
                "total_shots": 0.3774,
                "rating": 6.7846,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2761,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48
              },
              "params": {
                "expected_minutes": 22.48,
                "projection_minutes": 26.0,
                "minutes_scale": 0.8647,
                "appearance_probability": 0.522
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.341,
                "expected_assists": 0.023,
                "assists": 0.0353,
                "assist_rate": 0.0353,
                "expected_goals": 0.0291,
                "goals": 0.0412,
                "goal_rate": 0.0412,
                "shots_on_target": 0.1013,
                "total_shots": 0.3774,
                "rating": 6.7846,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2761,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48
              },
              "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.341,
                "expected_assists": 0.023,
                "assist_rate": 0.0353,
                "assists": 0,
                "expected_goals": 0.0291,
                "goal_rate": 0.0412,
                "goals": 0,
                "shots_on_target": 0.1013,
                "total_shots": 0.3774,
                "rating": 6.7846,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2761,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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.522,
                "projected_substitutes": 2,
                "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 71.0)",
              "stats": {
                "key_pass": 0.341,
                "expected_assists": 0.023,
                "assist_rate": 0.0353,
                "assists": 0,
                "expected_goals": 0.0291,
                "goal_rate": 0.0412,
                "goals": 0,
                "shots_on_target": 0.1013,
                "total_shots": 0.3774,
                "rating": 6.7846,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2761,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 71.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4406,
                "fifa_rank": 4706.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            }
          ]
        },
        "Ilias Akhomach": {
          "player_id": 1089108,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 175,
          "market_value": 11100000,
          "stats": {
            "expected_goals": 0.053,
            "goal_rate": 0.0674,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0625,
            "key_pass": 1,
            "rating": 6.7682,
            "minutes": 20,
            "total_pass": 9,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 17,
            "possession_lost": 5.0422,
            "dispossessed": 0.7103,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0854,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0099,
            "offsides": 0,
            "ball_carries": 5,
            "total_progression": 23,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.727,
            "bench_expected_minutes": 20.36,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.388,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0511,
            "projected_assists": 0,
            "assist_probability": 0.0599,
            "finishing_factor": 1.0891,
            "creation_factor": 1.1455,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 65,
                "rating": 7.1,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1268,
                "expected_assists": 0.1647,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 1,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 3,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 75,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1601,
                "expected_assists": 0.2957,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 21,
                "key_pass": 1,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 67,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0363,
                "expected_assists": 0.0483,
                "total_shots": 1,
                "total_pass": 14,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 67,
                "rating": 8.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0726,
                "expected_assists": 0.8929,
                "total_shots": 1,
                "total_pass": 25,
                "accurate_pass": 20,
                "key_pass": 2,
                "duels_won": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 63,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0258,
                "expected_assists": 0.3178,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 24,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 13,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0127,
                "expected_assists": 0.0046,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 20,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0248,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 18,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 11,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "interceptions": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 6,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083239,
              "match_date": "2026-04-26",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1036,
                "expected_assists": 0.0194,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 16,
                "key_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3623,
            "combined_rank_score": 1590.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 768.0,
            "sofascore_rating": 6.645,
            "sofascore_appearances": 20.0,
            "fifa_rank": 2412.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7682,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ilias Akhomach",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Joe Scally",
                  "ranking": 3618
                },
                {
                  "player_name": "Petros Mantalos",
                  "ranking": 3619
                },
                {
                  "player_name": "Rodinei",
                  "ranking": 3620
                },
                {
                  "player_name": "David Jurásek",
                  "ranking": 3621
                },
                {
                  "player_name": "Raúl Moro",
                  "ranking": 3622
                }
              ],
              "lower": [
                {
                  "player_name": "Andrija Živković",
                  "ranking": 3624
                },
                {
                  "player_name": "Maffeo",
                  "ranking": 3625
                },
                {
                  "player_name": "Harold Moukoudi",
                  "ranking": 3626
                },
                {
                  "player_name": "Davide Calabria",
                  "ranking": 3627
                },
                {
                  "player_name": "Luka Jović",
                  "ranking": 3628
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.755,
          "history_matches": 29,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 29,
            "data_confidence": 0.755,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 20.36,
            "bench_appearance_prob": 0.727,
            "market_value_adjustment": 1.0013,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 0.0,
              "sub_appearances": 3.0,
              "minutes_per_sub": 16.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "Bench projection scaled from XGBoost F_service (29 historical appearances) to 20.4 expected mins (appearance prob 0.73); FBref playing time empirical prior: 3.0 sub appearances, 16.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0579,
                "goals": 0.0677,
                "goal_rate": 0.0677,
                "shots_on_target": 0.2346,
                "total_shots": 0.8702,
                "expected_assists": 0.0683,
                "key_pass": 0.5916,
                "rating": 6.7682,
                "minutes": 20.41,
                "total_pass": 8.5942,
                "accurate_pass": 7.5016,
                "duels_won": 1.6762,
                "total_long_balls": 0.4095,
                "accurate_long_balls": 0.2438,
                "total_opp_half_passes": 6.8388,
                "accurate_opp_half_passes": 5.9503,
                "crosses_total": 1.2551,
                "crosses_accurate": 0.0917,
                "touches": 16.5531,
                "possession_lost": 5.048,
                "dispossessed": 0.7094,
                "duels_lost": 2.8767,
                "aerial_lost": 0.55,
                "total_contest": 1.3032,
                "won_contest": 0.1985,
                "ball_recovery": 0.7748,
                "challenges_lost": 0.0,
                "fouls": 0.5508,
                "fouls_drawn": 0.768,
                "assists": 0.0858,
                "assist_rate": 0.0858,
                "interceptions": 0.1187,
                "tackles_won": 0.3014,
                "tackles": 0.6716,
                "clearances": 0.2623,
                "blocks": 0.0,
                "big_chances_created": 0.093,
                "big_chances_missed": 0.0884,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4746,
                "total_progression": 23.0874,
                "progressive_carries": 0.9182,
                "shots_off_target": 0.6356
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.1514,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1287,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.1094,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.093,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.079,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0672,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0571,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.0485,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0412,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0749,
                  "accuratePass": 15.4111,
                  "totalOppositionHalfPasses": 15.8225,
                  "accurateOppositionHalfPasses": 12.681,
                  "totalShots": 1.4951
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.057866837829351425,
                    "model_output": 0.0579,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0829
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0174
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0082
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0067
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.0186,
                      "total": 0.0579,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.549635
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.167094
                        },
                        {
                          "name": "goals",
                          "margin": -0.089344
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.080011
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.05394
                        }
                      ],
                      "others_margin": -0.279627
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06769566982984543,
                    "model_output": 0.0677,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0933
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0105
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0077
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0061
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0053
                        }
                      ],
                      "others": -0.0099,
                      "total": 0.0677,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.626658
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.102999
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.082572
                        },
                        {
                          "name": "goals",
                          "margin": -0.071541
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.066385
                        }
                      ],
                      "others_margin": -0.135519
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.23456518352031708,
                    "model_output": 0.2346,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2269
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0188
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0173
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0111
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0108
                        }
                      ],
                      "others": -0.0349,
                      "total": 0.2346,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.555832
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.06347
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.062373
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.040373
                        },
                        {
                          "name": "goals",
                          "margin": -0.039464
                        }
                      ],
                      "others_margin": -0.138486
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8701278567314148,
                    "model_output": 0.8701,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5445
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0612
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0603
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0431
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0315
                        }
                      ],
                      "others": -0.0393,
                      "total": 0.8701,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.544459
                        },
                        {
                          "name": "goals",
                          "margin": -0.061242
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.060295
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.043053
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.031549
                        }
                      ],
                      "others_margin": -0.039221
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06834474951028824,
                    "model_output": 0.0683,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0217
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.006
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0053
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0032
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0028
                        }
                      ],
                      "others": 0.0148,
                      "total": 0.0683,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.412596
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.131087
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.103191
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.060959
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.054567
                        }
                      ],
                      "others_margin": 0.245592
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.591600239276886,
                    "model_output": 0.5916,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2678
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0504
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0383
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0306
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0254
                        }
                      ],
                      "others": 0.028,
                      "total": 0.5916,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.494323
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.113666
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.078451
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.05858
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.046195
                        }
                      ],
                      "others_margin": 0.048311
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7682085037231445,
                    "model_output": 6.7682,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0775
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0269
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0234
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0153
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0152
                        }
                      ],
                      "others": -0.0059,
                      "total": 6.7682,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.077515
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.026874
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.023396
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.015271
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.015204
                        }
                      ],
                      "others_margin": -0.005868
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 29,
                  "role_matches": 15,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0013, quality 0.535)",
              "stats": {
                "expected_goals": 0.0579,
                "goals": 0.0678,
                "goal_rate": 0.0678,
                "shots_on_target": 0.2349,
                "total_shots": 0.8713,
                "expected_assists": 0.0684,
                "key_pass": 0.5924,
                "rating": 6.7682,
                "minutes": 20.41,
                "total_pass": 8.6054,
                "accurate_pass": 7.5114,
                "duels_won": 1.6784,
                "total_long_balls": 0.41,
                "accurate_long_balls": 0.2441,
                "total_opp_half_passes": 6.8477,
                "accurate_opp_half_passes": 5.958,
                "crosses_total": 1.2567,
                "crosses_accurate": 0.0918,
                "touches": 16.5746,
                "possession_lost": 5.0546,
                "dispossessed": 0.7103,
                "duels_lost": 2.8804,
                "aerial_lost": 0.5507,
                "total_contest": 1.3049,
                "won_contest": 0.1988,
                "ball_recovery": 0.7758,
                "challenges_lost": 0.0,
                "fouls": 0.5515,
                "fouls_drawn": 0.769,
                "assists": 0.0859,
                "assist_rate": 0.0859,
                "interceptions": 0.1189,
                "tackles_won": 0.3018,
                "tackles": 0.6725,
                "clearances": 0.2626,
                "blocks": 0.0,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0885,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4817,
                "total_progression": 23.1174,
                "progressive_carries": 0.9194,
                "shots_off_target": 0.6364
              },
              "params": {
                "market_value_eur": 11100000,
                "quality_factor": 0.5353,
                "boost_factor": 1.0013,
                "reference_quality": 0.505,
                "history_matches": 29,
                "history_shrink": 0.1471,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0032)",
              "stats": {
                "expected_goals": 0.0579,
                "goals": 0.0676,
                "goal_rate": 0.0676,
                "shots_on_target": 0.2342,
                "total_shots": 0.8685,
                "expected_assists": 0.0684,
                "key_pass": 0.5924,
                "rating": 6.7682,
                "minutes": 20.41,
                "total_pass": 8.6054,
                "accurate_pass": 7.5114,
                "duels_won": 1.6784,
                "total_long_balls": 0.41,
                "accurate_long_balls": 0.2441,
                "total_opp_half_passes": 6.8477,
                "accurate_opp_half_passes": 5.958,
                "crosses_total": 1.2642,
                "crosses_accurate": 0.0918,
                "touches": 16.5746,
                "possession_lost": 5.0546,
                "dispossessed": 0.7103,
                "duels_lost": 2.8804,
                "aerial_lost": 0.5507,
                "total_contest": 1.3049,
                "won_contest": 0.1988,
                "ball_recovery": 0.7758,
                "challenges_lost": 0.0,
                "fouls": 0.5512,
                "fouls_drawn": 0.7694,
                "assists": 0.0856,
                "assist_rate": 0.0856,
                "interceptions": 0.12,
                "tackles_won": 0.3008,
                "tackles": 0.6725,
                "clearances": 0.2626,
                "blocks": 0.0,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0885,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4817,
                "total_progression": 23.1174,
                "progressive_carries": 0.9194,
                "shots_off_target": 0.6364
              },
              "params": {
                "blend_weight": 0.0032,
                "history_matches": 29,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2268,
                "prior_reliability": 0.0333,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 1.2567,
                  "after": 1.2642
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 20.4 to 20.4 expected minutes (appearance prob 0.73)",
              "stats": {
                "expected_goals": 0.0578,
                "goals": 0.0674,
                "goal_rate": 0.0674,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0682,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assists": 0.0854,
                "assist_rate": 0.0854,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36
              },
              "params": {
                "expected_minutes": 20.36,
                "projection_minutes": 20.41,
                "minutes_scale": 0.9976,
                "appearance_probability": 0.727
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0578,
                "goals": 0.0674,
                "goal_rate": 0.0674,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0682,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assists": 0.0854,
                "assist_rate": 0.0854,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0578,
                "goal_rate": 0.0674,
                "goals": 0,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0682,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assist_rate": 0.0854,
                "assists": 0,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "expected_goals": 0.053,
                "goal_rate": 0.0674,
                "goals": 0,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0625,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assist_rate": 0.0854,
                "assists": 0,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0099,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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.0891,
                "creation_factor": 1.1455
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 0.727
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0682,
                  "after": 0.0625
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 75.0)",
              "stats": {
                "expected_goals": 0.053,
                "goal_rate": 0.0674,
                "goals": 0,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0625,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assist_rate": 0.0854,
                "assists": 0,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0099,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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.0891,
                "creation_factor": 1.1455,
                "fifa_overall": 75.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": 3623,
                "fifa_rank": 2412.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.053,
                "goal_rate": 0.0674,
                "goals": 0,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0625,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assist_rate": 0.0854,
                "assists": 0,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0099,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0511,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0891,
                "creation_factor": 1.1455,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0511,
                "goal_rate": 0.0674,
                "scorer_weight": 0.0577,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0294,
                "finishing_factor": 1.0891,
                "appearance_weight": 0.727,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.053,
                "goal_rate": 0.0674,
                "goals": 0,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0625,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assist_rate": 0.0854,
                "assists": 0,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0099,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0511,
                "projected_assists": 0,
                "assist_probability": 0.0599,
                "finishing_factor": 1.0891,
                "creation_factor": 1.1455,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0599,
                "assist_rate": 0.0854,
                "provider_weight": 0.0716,
                "squad_weight_total": 1.3182,
                "weight_share": 0.0543,
                "creation_factor": 1.1455,
                "appearance_weight": 0.727,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Manor Solomon": {
          "player_id": 862223,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 6,
          "height": 167,
          "market_value": 7800000,
          "stats": {
            "expected_goals": 0.0654,
            "goal_rate": 0.0719,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0411,
            "key_pass": 1,
            "rating": 6.6362,
            "minutes": 26,
            "total_pass": 10,
            "accurate_pass": 9,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 6,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 5.0493,
            "dispossessed": 0.1406,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.2076,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0427,
            "offsides": 0,
            "ball_carries": 7,
            "total_progression": 7,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.569,
            "bench_expected_minutes": 25.53,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.388,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0618,
            "projected_assists": 0,
            "assist_probability": 0.0397,
            "finishing_factor": 0.8633,
            "creation_factor": 1.25,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 14083159,
              "match_date": "2025-12-06",
              "home_team": "Villarreal",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Getafe",
              "stats": {
                "minutes": 20,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0336,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083134,
              "match_date": "2025-11-22",
              "home_team": "Villarreal",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 16,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0128,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 8,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083690,
              "match_date": "2025-10-18",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 9,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0862,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083586,
              "match_date": "2025-09-27",
              "home_team": "Villarreal",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 72,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0272,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 15,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083443,
              "match_date": "2025-09-23",
              "home_team": "Sevilla",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 13,
                "rating": 7.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3877,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083351,
              "match_date": "2025-09-20",
              "home_team": "Villarreal",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 23,
                "rating": 7.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0302,
                "expected_assists": 0.2625,
                "total_shots": 1,
                "total_pass": 8,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2850,
            "combined_rank_score": 964.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 137.0,
            "sofascore_rating": 7.3571,
            "sofascore_appearances": 7.0,
            "fifa_rank": 1792.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6362,
            "source_file": "data/player_rankings.csv",
            "player_name": "Manor Solomon",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Barrenetxea",
                  "ranking": 2845
                },
                {
                  "player_name": "Sergio Canales",
                  "ranking": 2846
                },
                {
                  "player_name": "Josip Šutalo",
                  "ranking": 2847
                },
                {
                  "player_name": "Orlando Mosquera",
                  "ranking": 2848
                },
                {
                  "player_name": "Kristian Dimitrov",
                  "ranking": 2849
                }
              ],
              "lower": [
                {
                  "player_name": "Jørgen Strand Larsen",
                  "ranking": 2851
                },
                {
                  "player_name": "Ulugbek Khoshimov",
                  "ranking": 2852
                },
                {
                  "player_name": "Kian Ronan",
                  "ranking": 2853
                },
                {
                  "player_name": "Carlos Richards",
                  "ranking": 2854
                },
                {
                  "player_name": "Cheick Doucouré",
                  "ranking": 2855
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.625,
          "history_matches": 6,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 6,
            "data_confidence": 0.625,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.52527948921528,
            "bench_appearance_prob": 0.5693308858734218,
            "market_value_adjustment": 0.9988,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (6 historical appearances) to 25.5 expected mins (appearance prob 0.57)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0619,
                "goals": 0.0487,
                "goal_rate": 0.0487,
                "shots_on_target": 0.2011,
                "total_shots": 0.5232,
                "expected_assists": 0.0388,
                "key_pass": 0.377,
                "rating": 6.6362,
                "minutes": 17.29,
                "total_pass": 6.7957,
                "accurate_pass": 5.8093,
                "duels_won": 1.0095,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.3396,
                "accurate_opp_half_passes": 4.3532,
                "crosses_total": 1.0275,
                "crosses_accurate": 0.3356,
                "touches": 12.0454,
                "possession_lost": 3.4243,
                "dispossessed": 0.1408,
                "duels_lost": 0.9116,
                "aerial_lost": 0.0,
                "total_contest": 1.1159,
                "won_contest": 0.5107,
                "ball_recovery": 1.152,
                "challenges_lost": 0.1656,
                "fouls": 0.0,
                "fouls_drawn": 0.2696,
                "assists": 0.1408,
                "assist_rate": 0.1408,
                "interceptions": 0.0,
                "tackles_won": 0.2292,
                "tackles": 0.2292,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.1927,
                "big_chances_missed": 0.0,
                "xgot": 0.0403,
                "offsides": 0.2696,
                "ball_carries": 4.4595,
                "total_progression": 4.6086,
                "shots_off_target": 0.3221
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2025-12-06",
                    "opponent": "Getafe",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.2408,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2025-11-22",
                    "opponent": "Mallorca",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.2047,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2025-10-18",
                    "opponent": "Real Betis",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.174,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2025-09-27",
                    "opponent": "Athletic Club",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.1479,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-09-23",
                    "opponent": "Sevilla",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.1257,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2025-09-20",
                    "opponent": "Osasuna",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1069,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.052,
                  "accuratePass": 7.2939,
                  "totalOppositionHalfPasses": 6.2229,
                  "accurateOppositionHalfPasses": 5.2539,
                  "totalShots": 0.2326
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06191544979810715,
                    "model_output": 0.0619,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0934
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0143
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0056
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0035
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0031
                        }
                      ],
                      "others": -0.0141,
                      "total": 0.0619,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.647876
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.150064
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.065704
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.043881
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.040363
                        }
                      ],
                      "others_margin": -0.204138
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.04873783886432648,
                    "model_output": 0.0487,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0937
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0135
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0102
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0055
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0048
                        }
                      ],
                      "others": -0.0241,
                      "total": 0.0487,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.630038
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.135127
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.115499
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.068196
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.06386
                        }
                      ],
                      "others_margin": -0.401519
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2011418640613556,
                    "model_output": 0.2011,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2205
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0325
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0149
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0116
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.0417,
                      "total": 0.2011,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.535161
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.110021
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.055018
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.044733
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.03982
                        }
                      ],
                      "others_margin": -0.188221
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5232036709785461,
                    "model_output": 0.5232,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4817
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1382
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0425
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": -0.0324
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0305
                        }
                      ],
                      "others": -0.1317,
                      "total": 0.5232,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.481656
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.138212
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.042526
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": -0.032414
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.030502
                        }
                      ],
                      "others_margin": -0.131638
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0388331301510334,
                    "model_output": 0.0388,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0169
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0046
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.004
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0027
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0025
                        }
                      ],
                      "others": 0.0002,
                      "total": 0.0388,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.305399
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.102513
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.097672
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.072107
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.066372
                        }
                      ],
                      "others_margin": 0.006912
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3769521117210388,
                    "model_output": 0.377,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2544
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0312
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0184
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0156
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.015
                        }
                      ],
                      "others": -0.0119,
                      "total": 0.377,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.462745
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.074973
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.044757
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.037792
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.037758
                        }
                      ],
                      "others_margin": -0.031322
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6362457275390625,
                    "model_output": 6.6362,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0488
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0135
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0115
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0105
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0082
                        }
                      ],
                      "others": -0.0421,
                      "total": 6.6362,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.04879
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.01346
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.01153
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.010494
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.008218
                        }
                      ],
                      "others_margin": -0.042107
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "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.9988, quality 0.496)",
              "stats": {
                "expected_goals": 0.0618,
                "goals": 0.0487,
                "goal_rate": 0.0487,
                "shots_on_target": 0.2009,
                "total_shots": 0.5226,
                "expected_assists": 0.0388,
                "key_pass": 0.3765,
                "rating": 6.6362,
                "minutes": 17.29,
                "total_pass": 6.7875,
                "accurate_pass": 5.8023,
                "duels_won": 1.0083,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.3332,
                "accurate_opp_half_passes": 4.348,
                "crosses_total": 1.0263,
                "crosses_accurate": 0.3352,
                "touches": 12.0309,
                "possession_lost": 3.4202,
                "dispossessed": 0.1406,
                "duels_lost": 0.9105,
                "aerial_lost": 0.0,
                "total_contest": 1.1146,
                "won_contest": 0.5101,
                "ball_recovery": 1.1506,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.2693,
                "assists": 0.1406,
                "assist_rate": 0.1406,
                "interceptions": 0.0,
                "tackles_won": 0.2289,
                "tackles": 0.2289,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.1925,
                "big_chances_missed": 0.0,
                "xgot": 0.0403,
                "offsides": 0.2693,
                "ball_carries": 4.4541,
                "total_progression": 4.6031,
                "shots_off_target": 0.3217
              },
              "params": {
                "market_value_eur": 7800000,
                "quality_factor": 0.4963,
                "boost_factor": 0.9988,
                "reference_quality": 0.505,
                "history_matches": 6,
                "history_shrink": 0.4545,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.3 to 25.5 expected minutes (appearance prob 0.57)",
              "stats": {
                "expected_goals": 0.0912,
                "goals": 0.0719,
                "goal_rate": 0.0719,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0573,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assists": 0.2076,
                "assist_rate": 0.2076,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0595,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53
              },
              "params": {
                "expected_minutes": 25.53,
                "projection_minutes": 17.29,
                "minutes_scale": 1.4763,
                "appearance_probability": 0.569
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0912,
                "goals": 0.0719,
                "goal_rate": 0.0719,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0573,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assists": 0.2076,
                "assist_rate": 0.2076,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0595,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0912,
                "goal_rate": 0.0719,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0573,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assist_rate": 0.2076,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0595,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "expected_goals": 0.0654,
                "goal_rate": 0.0719,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0411,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assist_rate": 0.2076,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0427,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8633,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 0.569
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0912,
                  "after": 0.0654
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0573,
                  "after": 0.0411
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 76.0)",
              "stats": {
                "expected_goals": 0.0654,
                "goal_rate": 0.0719,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0411,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assist_rate": 0.2076,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0427,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8633,
                "creation_factor": 1.25,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2850,
                "fifa_rank": 1792.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0654,
                "goal_rate": 0.0719,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0411,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assist_rate": 0.2076,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0427,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0618,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8633,
                "creation_factor": 1.25,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0618,
                "goal_rate": 0.0719,
                "scorer_weight": 0.0565,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0287,
                "finishing_factor": 0.8633,
                "appearance_weight": 0.569,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.0654,
                "goal_rate": 0.0719,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0411,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assist_rate": 0.2076,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0427,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0618,
                "projected_assists": 0,
                "assist_probability": 0.0397,
                "finishing_factor": 0.8633,
                "creation_factor": 1.25,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0397,
                "assist_rate": 0.2076,
                "provider_weight": 0.0514,
                "squad_weight_total": 1.3182,
                "weight_share": 0.039,
                "creation_factor": 1.25,
                "appearance_weight": 0.569,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Ilias Akhomach": {
          "player_id": 1089108,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 175,
          "market_value": 11100000,
          "stats": {
            "expected_goals": 0.053,
            "goal_rate": 0.0674,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0625,
            "key_pass": 1,
            "rating": 6.7682,
            "minutes": 20,
            "total_pass": 9,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 17,
            "possession_lost": 5.0422,
            "dispossessed": 0.7103,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0854,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0099,
            "offsides": 0,
            "ball_carries": 5,
            "total_progression": 23,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.727,
            "bench_expected_minutes": 20.36,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.388,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0511,
            "projected_assists": 0,
            "assist_probability": 0.0599,
            "finishing_factor": 1.0891,
            "creation_factor": 1.1455,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16421089,
              "match_date": "2026-10-24",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Valencia",
              "stats": {
                "minutes": 65,
                "rating": 7.1,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1268,
                "expected_assists": 0.1647,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 1,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 3,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 75,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1601,
                "expected_assists": 0.2957,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 21,
                "key_pass": 1,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 67,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0363,
                "expected_assists": 0.0483,
                "total_shots": 1,
                "total_pass": 14,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 67,
                "rating": 8.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0726,
                "expected_assists": 0.8929,
                "total_shots": 1,
                "total_pass": 25,
                "accurate_pass": 20,
                "key_pass": 2,
                "duels_won": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 63,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0258,
                "expected_assists": 0.3178,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 24,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 13,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0127,
                "expected_assists": 0.0046,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 20,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0248,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 18,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 11,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "interceptions": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 6,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083239,
              "match_date": "2026-04-26",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1036,
                "expected_assists": 0.0194,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 16,
                "key_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3623,
            "combined_rank_score": 1590.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 768.0,
            "sofascore_rating": 6.645,
            "sofascore_appearances": 20.0,
            "fifa_rank": 2412.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7682,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ilias Akhomach",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Joe Scally",
                  "ranking": 3618
                },
                {
                  "player_name": "Petros Mantalos",
                  "ranking": 3619
                },
                {
                  "player_name": "Rodinei",
                  "ranking": 3620
                },
                {
                  "player_name": "David Jurásek",
                  "ranking": 3621
                },
                {
                  "player_name": "Raúl Moro",
                  "ranking": 3622
                }
              ],
              "lower": [
                {
                  "player_name": "Andrija Živković",
                  "ranking": 3624
                },
                {
                  "player_name": "Maffeo",
                  "ranking": 3625
                },
                {
                  "player_name": "Harold Moukoudi",
                  "ranking": 3626
                },
                {
                  "player_name": "Davide Calabria",
                  "ranking": 3627
                },
                {
                  "player_name": "Luka Jović",
                  "ranking": 3628
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.755,
          "history_matches": 29,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 29,
            "data_confidence": 0.755,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 20.36,
            "bench_appearance_prob": 0.727,
            "market_value_adjustment": 1.0013,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 0.0,
              "sub_appearances": 3.0,
              "minutes_per_sub": 16.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "Bench projection scaled from XGBoost F_service (29 historical appearances) to 20.4 expected mins (appearance prob 0.73); FBref playing time empirical prior: 3.0 sub appearances, 16.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0579,
                "goals": 0.0677,
                "goal_rate": 0.0677,
                "shots_on_target": 0.2346,
                "total_shots": 0.8702,
                "expected_assists": 0.0683,
                "key_pass": 0.5916,
                "rating": 6.7682,
                "minutes": 20.41,
                "total_pass": 8.5942,
                "accurate_pass": 7.5016,
                "duels_won": 1.6762,
                "total_long_balls": 0.4095,
                "accurate_long_balls": 0.2438,
                "total_opp_half_passes": 6.8388,
                "accurate_opp_half_passes": 5.9503,
                "crosses_total": 1.2551,
                "crosses_accurate": 0.0917,
                "touches": 16.5531,
                "possession_lost": 5.048,
                "dispossessed": 0.7094,
                "duels_lost": 2.8767,
                "aerial_lost": 0.55,
                "total_contest": 1.3032,
                "won_contest": 0.1985,
                "ball_recovery": 0.7748,
                "challenges_lost": 0.0,
                "fouls": 0.5508,
                "fouls_drawn": 0.768,
                "assists": 0.0858,
                "assist_rate": 0.0858,
                "interceptions": 0.1187,
                "tackles_won": 0.3014,
                "tackles": 0.6716,
                "clearances": 0.2623,
                "blocks": 0.0,
                "big_chances_created": 0.093,
                "big_chances_missed": 0.0884,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4746,
                "total_progression": 23.0874,
                "progressive_carries": 0.9182,
                "shots_off_target": 0.6356
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Valencia",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.1514,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1287,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.1094,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.093,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.079,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0672,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0571,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.0485,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0412,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0749,
                  "accuratePass": 15.4111,
                  "totalOppositionHalfPasses": 15.8225,
                  "accurateOppositionHalfPasses": 12.681,
                  "totalShots": 1.4951
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.057866837829351425,
                    "model_output": 0.0579,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0829
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0174
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0082
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0067
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.0186,
                      "total": 0.0579,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.549635
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.167094
                        },
                        {
                          "name": "goals",
                          "margin": -0.089344
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.080011
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.05394
                        }
                      ],
                      "others_margin": -0.279627
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06769566982984543,
                    "model_output": 0.0677,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0933
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0105
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0077
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0061
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0053
                        }
                      ],
                      "others": -0.0099,
                      "total": 0.0677,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.626658
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.102999
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.082572
                        },
                        {
                          "name": "goals",
                          "margin": -0.071541
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.066385
                        }
                      ],
                      "others_margin": -0.135519
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.23456518352031708,
                    "model_output": 0.2346,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2269
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0188
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0173
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0111
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0108
                        }
                      ],
                      "others": -0.0349,
                      "total": 0.2346,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.555832
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.06347
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.062373
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.040373
                        },
                        {
                          "name": "goals",
                          "margin": -0.039464
                        }
                      ],
                      "others_margin": -0.138486
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8701278567314148,
                    "model_output": 0.8701,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5445
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0612
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0603
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0431
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0315
                        }
                      ],
                      "others": -0.0393,
                      "total": 0.8701,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.544459
                        },
                        {
                          "name": "goals",
                          "margin": -0.061242
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.060295
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.043053
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.031549
                        }
                      ],
                      "others_margin": -0.039221
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06834474951028824,
                    "model_output": 0.0683,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0217
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.006
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0053
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0032
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0028
                        }
                      ],
                      "others": 0.0148,
                      "total": 0.0683,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.412596
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.131087
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.103191
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.060959
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.054567
                        }
                      ],
                      "others_margin": 0.245592
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.591600239276886,
                    "model_output": 0.5916,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2678
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0504
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0383
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0306
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0254
                        }
                      ],
                      "others": 0.028,
                      "total": 0.5916,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.494323
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.113666
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.078451
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.05858
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.046195
                        }
                      ],
                      "others_margin": 0.048311
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7682085037231445,
                    "model_output": 6.7682,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0775
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0269
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0234
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0153
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0152
                        }
                      ],
                      "others": -0.0059,
                      "total": 6.7682,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.077515
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.026874
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.023396
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.015271
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.015204
                        }
                      ],
                      "others_margin": -0.005868
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 29,
                  "role_matches": 15,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0013, quality 0.535)",
              "stats": {
                "expected_goals": 0.0579,
                "goals": 0.0678,
                "goal_rate": 0.0678,
                "shots_on_target": 0.2349,
                "total_shots": 0.8713,
                "expected_assists": 0.0684,
                "key_pass": 0.5924,
                "rating": 6.7682,
                "minutes": 20.41,
                "total_pass": 8.6054,
                "accurate_pass": 7.5114,
                "duels_won": 1.6784,
                "total_long_balls": 0.41,
                "accurate_long_balls": 0.2441,
                "total_opp_half_passes": 6.8477,
                "accurate_opp_half_passes": 5.958,
                "crosses_total": 1.2567,
                "crosses_accurate": 0.0918,
                "touches": 16.5746,
                "possession_lost": 5.0546,
                "dispossessed": 0.7103,
                "duels_lost": 2.8804,
                "aerial_lost": 0.5507,
                "total_contest": 1.3049,
                "won_contest": 0.1988,
                "ball_recovery": 0.7758,
                "challenges_lost": 0.0,
                "fouls": 0.5515,
                "fouls_drawn": 0.769,
                "assists": 0.0859,
                "assist_rate": 0.0859,
                "interceptions": 0.1189,
                "tackles_won": 0.3018,
                "tackles": 0.6725,
                "clearances": 0.2626,
                "blocks": 0.0,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0885,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4817,
                "total_progression": 23.1174,
                "progressive_carries": 0.9194,
                "shots_off_target": 0.6364
              },
              "params": {
                "market_value_eur": 11100000,
                "quality_factor": 0.5353,
                "boost_factor": 1.0013,
                "reference_quality": 0.505,
                "history_matches": 29,
                "history_shrink": 0.1471,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0032)",
              "stats": {
                "expected_goals": 0.0579,
                "goals": 0.0676,
                "goal_rate": 0.0676,
                "shots_on_target": 0.2342,
                "total_shots": 0.8685,
                "expected_assists": 0.0684,
                "key_pass": 0.5924,
                "rating": 6.7682,
                "minutes": 20.41,
                "total_pass": 8.6054,
                "accurate_pass": 7.5114,
                "duels_won": 1.6784,
                "total_long_balls": 0.41,
                "accurate_long_balls": 0.2441,
                "total_opp_half_passes": 6.8477,
                "accurate_opp_half_passes": 5.958,
                "crosses_total": 1.2642,
                "crosses_accurate": 0.0918,
                "touches": 16.5746,
                "possession_lost": 5.0546,
                "dispossessed": 0.7103,
                "duels_lost": 2.8804,
                "aerial_lost": 0.5507,
                "total_contest": 1.3049,
                "won_contest": 0.1988,
                "ball_recovery": 0.7758,
                "challenges_lost": 0.0,
                "fouls": 0.5512,
                "fouls_drawn": 0.7694,
                "assists": 0.0856,
                "assist_rate": 0.0856,
                "interceptions": 0.12,
                "tackles_won": 0.3008,
                "tackles": 0.6725,
                "clearances": 0.2626,
                "blocks": 0.0,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0885,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4817,
                "total_progression": 23.1174,
                "progressive_carries": 0.9194,
                "shots_off_target": 0.6364
              },
              "params": {
                "blend_weight": 0.0032,
                "history_matches": 29,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2268,
                "prior_reliability": 0.0333,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 1.2567,
                  "after": 1.2642
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 20.4 to 20.4 expected minutes (appearance prob 0.73)",
              "stats": {
                "expected_goals": 0.0578,
                "goals": 0.0674,
                "goal_rate": 0.0674,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0682,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assists": 0.0854,
                "assist_rate": 0.0854,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36
              },
              "params": {
                "expected_minutes": 20.36,
                "projection_minutes": 20.41,
                "minutes_scale": 0.9976,
                "appearance_probability": 0.727
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0578,
                "goals": 0.0674,
                "goal_rate": 0.0674,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0682,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assists": 0.0854,
                "assist_rate": 0.0854,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0578,
                "goal_rate": 0.0674,
                "goals": 0,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0682,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assist_rate": 0.0854,
                "assists": 0,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0108,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "expected_goals": 0.053,
                "goal_rate": 0.0674,
                "goals": 0,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0625,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assist_rate": 0.0854,
                "assists": 0,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0099,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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.0891,
                "creation_factor": 1.1455
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 0.727
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0682,
                  "after": 0.0625
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 75.0)",
              "stats": {
                "expected_goals": 0.053,
                "goal_rate": 0.0674,
                "goals": 0,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0625,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assist_rate": 0.0854,
                "assists": 0,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0099,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "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.0891,
                "creation_factor": 1.1455,
                "fifa_overall": 75.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": 3623,
                "fifa_rank": 2412.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.053,
                "goal_rate": 0.0674,
                "goals": 0,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0625,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assist_rate": 0.0854,
                "assists": 0,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0099,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0511,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0891,
                "creation_factor": 1.1455,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0511,
                "goal_rate": 0.0674,
                "scorer_weight": 0.0577,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0294,
                "finishing_factor": 1.0891,
                "appearance_weight": 0.727,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.053,
                "goal_rate": 0.0674,
                "goals": 0,
                "shots_on_target": 0.2336,
                "total_shots": 0.8685,
                "expected_assists": 0.0625,
                "key_pass": 0.5909,
                "rating": 6.7682,
                "minutes": 20.36,
                "total_pass": 8.5843,
                "accurate_pass": 7.493,
                "duels_won": 1.6743,
                "total_long_balls": 0.409,
                "accurate_long_balls": 0.2435,
                "total_opp_half_passes": 6.8309,
                "accurate_opp_half_passes": 5.9434,
                "crosses_total": 1.2611,
                "crosses_accurate": 0.0916,
                "touches": 16.534,
                "possession_lost": 5.0422,
                "dispossessed": 0.7103,
                "duels_lost": 2.8733,
                "aerial_lost": 0.5507,
                "total_contest": 1.3017,
                "won_contest": 0.1983,
                "ball_recovery": 0.7739,
                "challenges_lost": 0.0,
                "fouls": 0.5498,
                "fouls_drawn": 0.7675,
                "assist_rate": 0.0854,
                "assists": 0,
                "interceptions": 0.1197,
                "tackles_won": 0.3001,
                "tackles": 0.6709,
                "clearances": 0.262,
                "blocks": 0.0,
                "big_chances_created": 0.0929,
                "big_chances_missed": 0.0883,
                "xgot": 0.0099,
                "offsides": 0.0,
                "ball_carries": 5.4683,
                "total_progression": 23.0608,
                "progressive_carries": 0.9171,
                "shots_off_target": 0.6348,
                "bench_appearance_probability": 0.727,
                "bench_expected_minutes": 20.36,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0511,
                "projected_assists": 0,
                "assist_probability": 0.0599,
                "finishing_factor": 1.0891,
                "creation_factor": 1.1455,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0599,
                "assist_rate": 0.0854,
                "provider_weight": 0.0716,
                "squad_weight_total": 1.3182,
                "weight_share": 0.0543,
                "creation_factor": 1.1455,
                "appearance_weight": 0.727,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        },
        "Manor Solomon": {
          "player_id": 862223,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 6,
          "height": 167,
          "market_value": 7800000,
          "stats": {
            "expected_goals": 0.0654,
            "goal_rate": 0.0719,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0411,
            "key_pass": 1,
            "rating": 6.6362,
            "minutes": 26,
            "total_pass": 10,
            "accurate_pass": 9,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 6,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 5.0493,
            "dispossessed": 0.1406,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.2076,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0427,
            "offsides": 0,
            "ball_carries": 7,
            "total_progression": 7,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.569,
            "bench_expected_minutes": 25.53,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.388,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0618,
            "projected_assists": 0,
            "assist_probability": 0.0397,
            "finishing_factor": 0.8633,
            "creation_factor": 1.25,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 14083159,
              "match_date": "2025-12-06",
              "home_team": "Villarreal",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Getafe",
              "stats": {
                "minutes": 20,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0336,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083134,
              "match_date": "2025-11-22",
              "home_team": "Villarreal",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 16,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0128,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 8,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083690,
              "match_date": "2025-10-18",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 9,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0862,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083586,
              "match_date": "2025-09-27",
              "home_team": "Villarreal",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 72,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0272,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 15,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083443,
              "match_date": "2025-09-23",
              "home_team": "Sevilla",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 13,
                "rating": 7.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3877,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083351,
              "match_date": "2025-09-20",
              "home_team": "Villarreal",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 23,
                "rating": 7.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0302,
                "expected_assists": 0.2625,
                "total_shots": 1,
                "total_pass": 8,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2850,
            "combined_rank_score": 964.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 137.0,
            "sofascore_rating": 7.3571,
            "sofascore_appearances": 7.0,
            "fifa_rank": 1792.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6362,
            "source_file": "data/player_rankings.csv",
            "player_name": "Manor Solomon",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Barrenetxea",
                  "ranking": 2845
                },
                {
                  "player_name": "Sergio Canales",
                  "ranking": 2846
                },
                {
                  "player_name": "Josip Šutalo",
                  "ranking": 2847
                },
                {
                  "player_name": "Orlando Mosquera",
                  "ranking": 2848
                },
                {
                  "player_name": "Kristian Dimitrov",
                  "ranking": 2849
                }
              ],
              "lower": [
                {
                  "player_name": "Jørgen Strand Larsen",
                  "ranking": 2851
                },
                {
                  "player_name": "Ulugbek Khoshimov",
                  "ranking": 2852
                },
                {
                  "player_name": "Kian Ronan",
                  "ranking": 2853
                },
                {
                  "player_name": "Carlos Richards",
                  "ranking": 2854
                },
                {
                  "player_name": "Cheick Doucouré",
                  "ranking": 2855
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.625,
          "history_matches": 6,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 6,
            "data_confidence": 0.625,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.52527948921528,
            "bench_appearance_prob": 0.5693308858734218,
            "market_value_adjustment": 0.9988,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (6 historical appearances) to 25.5 expected mins (appearance prob 0.57)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0619,
                "goals": 0.0487,
                "goal_rate": 0.0487,
                "shots_on_target": 0.2011,
                "total_shots": 0.5232,
                "expected_assists": 0.0388,
                "key_pass": 0.377,
                "rating": 6.6362,
                "minutes": 17.29,
                "total_pass": 6.7957,
                "accurate_pass": 5.8093,
                "duels_won": 1.0095,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.3396,
                "accurate_opp_half_passes": 4.3532,
                "crosses_total": 1.0275,
                "crosses_accurate": 0.3356,
                "touches": 12.0454,
                "possession_lost": 3.4243,
                "dispossessed": 0.1408,
                "duels_lost": 0.9116,
                "aerial_lost": 0.0,
                "total_contest": 1.1159,
                "won_contest": 0.5107,
                "ball_recovery": 1.152,
                "challenges_lost": 0.1656,
                "fouls": 0.0,
                "fouls_drawn": 0.2696,
                "assists": 0.1408,
                "assist_rate": 0.1408,
                "interceptions": 0.0,
                "tackles_won": 0.2292,
                "tackles": 0.2292,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.1927,
                "big_chances_missed": 0.0,
                "xgot": 0.0403,
                "offsides": 0.2696,
                "ball_carries": 4.4595,
                "total_progression": 4.6086,
                "shots_off_target": 0.3221
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2025-12-06",
                    "opponent": "Getafe",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.2408,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2025-11-22",
                    "opponent": "Mallorca",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.2047,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2025-10-18",
                    "opponent": "Real Betis",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.174,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2025-09-27",
                    "opponent": "Athletic Club",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.1479,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-09-23",
                    "opponent": "Sevilla",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.1257,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2025-09-20",
                    "opponent": "Osasuna",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1069,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.052,
                  "accuratePass": 7.2939,
                  "totalOppositionHalfPasses": 6.2229,
                  "accurateOppositionHalfPasses": 5.2539,
                  "totalShots": 0.2326
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06191544979810715,
                    "model_output": 0.0619,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0934
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0143
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0056
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0035
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0031
                        }
                      ],
                      "others": -0.0141,
                      "total": 0.0619,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.647876
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.150064
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.065704
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.043881
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.040363
                        }
                      ],
                      "others_margin": -0.204138
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.04873783886432648,
                    "model_output": 0.0487,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0937
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0135
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0102
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0055
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0048
                        }
                      ],
                      "others": -0.0241,
                      "total": 0.0487,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.630038
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.135127
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.115499
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.068196
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.06386
                        }
                      ],
                      "others_margin": -0.401519
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2011418640613556,
                    "model_output": 0.2011,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2205
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0325
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0149
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0116
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.0417,
                      "total": 0.2011,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.535161
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.110021
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.055018
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.044733
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.03982
                        }
                      ],
                      "others_margin": -0.188221
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5232036709785461,
                    "model_output": 0.5232,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4817
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1382
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0425
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": -0.0324
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0305
                        }
                      ],
                      "others": -0.1317,
                      "total": 0.5232,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.481656
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.138212
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.042526
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": -0.032414
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.030502
                        }
                      ],
                      "others_margin": -0.131638
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0388331301510334,
                    "model_output": 0.0388,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0169
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0046
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.004
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0027
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0025
                        }
                      ],
                      "others": 0.0002,
                      "total": 0.0388,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.305399
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.102513
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.097672
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.072107
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.066372
                        }
                      ],
                      "others_margin": 0.006912
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3769521117210388,
                    "model_output": 0.377,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2544
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0312
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0184
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0156
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.015
                        }
                      ],
                      "others": -0.0119,
                      "total": 0.377,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.462745
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.074973
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.044757
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.037792
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.037758
                        }
                      ],
                      "others_margin": -0.031322
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6362457275390625,
                    "model_output": 6.6362,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0488
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0135
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0115
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0105
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0082
                        }
                      ],
                      "others": -0.0421,
                      "total": 6.6362,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.04879
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.01346
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.01153
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.010494
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.008218
                        }
                      ],
                      "others_margin": -0.042107
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "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.9988, quality 0.496)",
              "stats": {
                "expected_goals": 0.0618,
                "goals": 0.0487,
                "goal_rate": 0.0487,
                "shots_on_target": 0.2009,
                "total_shots": 0.5226,
                "expected_assists": 0.0388,
                "key_pass": 0.3765,
                "rating": 6.6362,
                "minutes": 17.29,
                "total_pass": 6.7875,
                "accurate_pass": 5.8023,
                "duels_won": 1.0083,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.3332,
                "accurate_opp_half_passes": 4.348,
                "crosses_total": 1.0263,
                "crosses_accurate": 0.3352,
                "touches": 12.0309,
                "possession_lost": 3.4202,
                "dispossessed": 0.1406,
                "duels_lost": 0.9105,
                "aerial_lost": 0.0,
                "total_contest": 1.1146,
                "won_contest": 0.5101,
                "ball_recovery": 1.1506,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.2693,
                "assists": 0.1406,
                "assist_rate": 0.1406,
                "interceptions": 0.0,
                "tackles_won": 0.2289,
                "tackles": 0.2289,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.1925,
                "big_chances_missed": 0.0,
                "xgot": 0.0403,
                "offsides": 0.2693,
                "ball_carries": 4.4541,
                "total_progression": 4.6031,
                "shots_off_target": 0.3217
              },
              "params": {
                "market_value_eur": 7800000,
                "quality_factor": 0.4963,
                "boost_factor": 0.9988,
                "reference_quality": 0.505,
                "history_matches": 6,
                "history_shrink": 0.4545,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.3 to 25.5 expected minutes (appearance prob 0.57)",
              "stats": {
                "expected_goals": 0.0912,
                "goals": 0.0719,
                "goal_rate": 0.0719,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0573,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assists": 0.2076,
                "assist_rate": 0.2076,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0595,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53
              },
              "params": {
                "expected_minutes": 25.53,
                "projection_minutes": 17.29,
                "minutes_scale": 1.4763,
                "appearance_probability": 0.569
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0912,
                "goals": 0.0719,
                "goal_rate": 0.0719,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0573,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assists": 0.2076,
                "assist_rate": 0.2076,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0595,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0912,
                "goal_rate": 0.0719,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0573,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assist_rate": 0.2076,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0595,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.85 (squad xG sum 1.4665, xG scale 1.2601, xA scale 1.2601, team xA 1.31 = 0.71 x lambda)",
              "stats": {
                "expected_goals": 0.0654,
                "goal_rate": 0.0719,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0411,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assist_rate": 0.2076,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0427,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8633,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.848,
                "squad_xg_sum": 1.4665,
                "squad_xa_sum": 1.0421,
                "team_expected_assists": 1.3132,
                "team_xa_to_xg_ratio": 0.7106,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2601,
                "xa_scale": 1.2601,
                "opponent_lambda": 1.191,
                "scoreline_reset": true,
                "appearance_weight": 0.569
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0912,
                  "after": 0.0654
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0573,
                  "after": 0.0411
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 76.0)",
              "stats": {
                "expected_goals": 0.0654,
                "goal_rate": 0.0719,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0411,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assist_rate": 0.2076,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0427,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8633,
                "creation_factor": 1.25,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2850,
                "fifa_rank": 1792.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0654,
                "goal_rate": 0.0719,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0411,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assist_rate": 0.2076,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0427,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0618,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8633,
                "creation_factor": 1.25,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0618,
                "goal_rate": 0.0719,
                "scorer_weight": 0.0565,
                "squad_weight_total": 1.9647,
                "weight_share": 0.0287,
                "finishing_factor": 0.8633,
                "appearance_weight": 0.569,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Georges Mikautadze",
                    "weight": 0.5433,
                    "already": 0,
                    "effective_weight": 0.5433,
                    "runner_up": "Alberto Moleiro",
                    "runner_up_effective_weight": 0.513
                  },
                  {
                    "n": 2,
                    "player": "Alberto Moleiro",
                    "weight": 0.513,
                    "already": 0,
                    "effective_weight": 0.513,
                    "runner_up": "Gerard Moreno",
                    "runner_up_effective_weight": 0.3063
                  }
                ]
              }
            },
            {
              "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.0654,
                "goal_rate": 0.0719,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.7715,
                "expected_assists": 0.0411,
                "key_pass": 0.5558,
                "rating": 6.6362,
                "minutes": 25.53,
                "total_pass": 10.0204,
                "accurate_pass": 8.566,
                "duels_won": 1.4886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.8734,
                "accurate_opp_half_passes": 6.419,
                "crosses_total": 1.5151,
                "crosses_accurate": 0.4949,
                "touches": 17.7613,
                "possession_lost": 5.0493,
                "dispossessed": 0.1406,
                "duels_lost": 1.3442,
                "aerial_lost": 0.0,
                "total_contest": 1.6455,
                "won_contest": 0.7531,
                "ball_recovery": 1.6986,
                "challenges_lost": 0.1654,
                "fouls": 0.0,
                "fouls_drawn": 0.3976,
                "assist_rate": 0.2076,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3379,
                "tackles": 0.3379,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2842,
                "big_chances_missed": 0.0,
                "xgot": 0.0427,
                "offsides": 0.2693,
                "ball_carries": 6.5756,
                "total_progression": 6.7956,
                "shots_off_target": 0.4749,
                "bench_appearance_probability": 0.569,
                "bench_expected_minutes": 25.53,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.388,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0618,
                "projected_assists": 0,
                "assist_probability": 0.0397,
                "finishing_factor": 0.8633,
                "creation_factor": 1.25,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0397,
                "assist_rate": 0.2076,
                "provider_weight": 0.0514,
                "squad_weight_total": 1.3182,
                "weight_share": 0.039,
                "creation_factor": 1.25,
                "appearance_weight": 0.569,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.3,
                    "already": 0,
                    "effective_weight": 0.3,
                    "runner_up": "Tajon Buchanan",
                    "runner_up_effective_weight": 0.1623
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 2,
        "expected_goals": 1.85,
        "expected_assists": 1.31,
        "total_shots": 18,
        "shots_on_target": 4,
        "total_passes": 467,
        "interceptions": 7,
        "tackles": 13,
        "avg_rating": 7.0,
        "possession_estimated_pct": 50.3,
        "pressing_actions_per_90": 6.6
      }
    },
    "Espanyol": {
      "formation": "4-2-3-1",
      "players": {
        "Roberto Fernández": {
          "player_id": 1392592,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 186,
          "market_value": 21000000,
          "stats": {
            "expected_goals": 0.4135,
            "goal_rate": 0.4031,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0422,
            "key_pass": 1,
            "rating": 6.7803,
            "minutes": 84,
            "total_pass": 11,
            "accurate_pass": 8,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 23,
            "possession_lost": 8.3128,
            "dispossessed": 0.3803,
            "duels_lost": 7,
            "aerial_lost": 4,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "assist_rate": 0.0219,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.3752,
            "offsides": 1,
            "ball_carries": 5,
            "total_progression": 2,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9469,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Renato Veiga, Alexander Freeman",
            "opponent_faced": "Renato Veiga, Alexander Freeman",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.3387,
            "projected_assists": 0,
            "assist_probability": 0.0413,
            "finishing_factor": 1.1339,
            "creation_factor": 0.8133,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0169,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 15,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 1,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 82,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1577,
                "expected_assists": 0.0007,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 8,
                "accurate_pass": 4,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 82,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4899,
                "expected_assists": 0.0086,
                "total_shots": 4,
                "shots_on_target": 3,
                "total_pass": 11,
                "accurate_pass": 9,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1692,
                "expected_assists": 0.0031,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 4,
                "accurate_pass": 4,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2843,
                "expected_assists": 0.0447,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 9,
                "key_pass": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 80,
                "rating": 7.2,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.3134,
                "expected_assists": 0.1532,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 12,
                "accurate_pass": 4,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.259,
                "expected_assists": 0.0027,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 7,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 83,
                "rating": 7.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2734,
                "expected_assists": 0.0482,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 14,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.62,
                "expected_assists": 0.0121,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 10,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 4,
                "duels_won": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 8.7,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4597,
                "expected_assists": 0.0976,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 12,
                "accurate_pass": 7,
                "key_pass": 2,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3459,
            "combined_rank_score": 1454.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 6.0,
            "sofascore_rating": 8.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2903.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7803,
            "source_file": "data/player_rankings.csv",
            "player_name": "Roberto Fernández",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Marco Sportiello",
                  "ranking": 3454
                },
                {
                  "player_name": "Arsène Kouassi",
                  "ranking": 3455
                },
                {
                  "player_name": "Leif Davis",
                  "ranking": 3456
                },
                {
                  "player_name": "Ismaëlo Ganiou",
                  "ranking": 3457
                },
                {
                  "player_name": "Olivier Giroud",
                  "ranking": 3458
                }
              ],
              "lower": [
                {
                  "player_name": "Eric Dier",
                  "ranking": 3460
                },
                {
                  "player_name": "Benjamin Nygren",
                  "ranking": 3461
                },
                {
                  "player_name": "Arnau Tenas",
                  "ranking": 3462
                },
                {
                  "player_name": "Yvon Mvogo",
                  "ranking": 3463
                },
                {
                  "player_name": "Duje Ćaleta-Car",
                  "ranking": 3464
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.779,
          "history_matches": 48,
          "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": 48,
            "data_confidence": 0.779,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0038,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 262.0,
              "goals_per90": 1.0344827586206897,
              "assists_per90": 0.0,
              "shots_per90": 2.06,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.1933
            },
            "rationale": "XGBoost regressor (F_service) evaluated 48 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Espanyol, rel: 0.19, gls/90: 1.0344827586206897, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3678,
                "goals": 0.4176,
                "goal_rate": 0.4176,
                "shots_on_target": 0.9274,
                "total_shots": 2.2791,
                "expected_assists": 0.0383,
                "key_pass": 0.5432,
                "rating": 6.7803,
                "minutes": 84.23,
                "total_pass": 11.2397,
                "accurate_pass": 7.5486,
                "duels_won": 4.3942,
                "total_long_balls": 0.2853,
                "accurate_long_balls": 0.1245,
                "total_opp_half_passes": 7.8138,
                "accurate_opp_half_passes": 4.6601,
                "crosses_total": 0.2653,
                "crosses_accurate": 0.0069,
                "touches": 23.047,
                "possession_lost": 8.2813,
                "dispossessed": 0.3789,
                "duels_lost": 6.7951,
                "aerial_lost": 3.5581,
                "total_contest": 0.6378,
                "won_contest": 0.1992,
                "ball_recovery": 1.0412,
                "challenges_lost": 0.6573,
                "fouls": 1.9017,
                "fouls_drawn": 1.3014,
                "assists": 0.0221,
                "assist_rate": 0.0221,
                "interceptions": 0.2531,
                "tackles_won": 0.6489,
                "tackles": 0.6742,
                "clearances": 1.1263,
                "blocks": 0.09,
                "big_chances_created": 0.0047,
                "big_chances_missed": 0.4018,
                "xgot": 0.3338,
                "offsides": 1.1626,
                "ball_carries": 4.912,
                "total_progression": 2.4722,
                "progressive_carries": 0.4027,
                "shots_off_target": 1.3517
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0783,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 8.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.3298,
                  "accuratePass": 7.2403,
                  "totalOppositionHalfPasses": 7.4958,
                  "accurateOppositionHalfPasses": 4.4533,
                  "totalShots": 1.9351
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.36782264709472656,
                    "model_output": 0.3678,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0662
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0295
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0164
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0138
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0129
                        }
                      ],
                      "others": 0.0331,
                      "total": 0.3678,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.291108
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.106612
                        },
                        {
                          "name": "goals",
                          "margin": 0.054611
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.04387
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.039381
                        }
                      ],
                      "others_margin": 0.094223
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.41761845350265503,
                    "model_output": 0.4176,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0693
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0328
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0309
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0275
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0242
                        }
                      ],
                      "others": 0.0324,
                      "total": 0.4176,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.296947
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.114677
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.097287
                        },
                        {
                          "name": "goals",
                          "margin": 0.079339
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.064797
                        }
                      ],
                      "others_margin": 0.080826
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.9273648858070374,
                    "model_output": 0.9274,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1567
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0557
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0482
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0383
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0291
                        }
                      ],
                      "others": 0.0672,
                      "total": 0.9274,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.25806
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.077775
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.062722
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.047139
                        },
                        {
                          "name": "goals",
                          "margin": 0.03444
                        }
                      ],
                      "others_margin": 0.075226
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.2791082859039307,
                    "model_output": 2.2791,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5257
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1166
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0675
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0551
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": 0.0521
                        }
                      ],
                      "others": 0.2169,
                      "total": 2.2791,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.525744
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.116645
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.067469
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.055076
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": 0.052096
                        }
                      ],
                      "others_margin": 0.216866
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.038255833089351654,
                    "model_output": 0.0383,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0185
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.012
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0087
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.005
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0037
                        }
                      ],
                      "others": -0.0151,
                      "total": 0.0383,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.253224
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.156203
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.130419
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.083242
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.065976
                        }
                      ],
                      "others_margin": -0.336772
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.5432422757148743,
                    "model_output": 0.5432,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1883
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0652
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0461
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0368
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0309
                        }
                      ],
                      "others": -0.1528,
                      "total": 0.5432,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.242338
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.077439
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.058551
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.049428
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.043442
                        }
                      ],
                      "others_margin": -0.247874
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7802839279174805,
                    "model_output": 6.7803,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0605
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0165
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0164
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0163
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0138
                        }
                      ],
                      "others": -0.0812,
                      "total": 6.7803,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.060453
                        },
                        {
                          "name": "rating",
                          "margin": 0.016455
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.016384
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.016255
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.013809
                        }
                      ],
                      "others_margin": -0.081149
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 48,
                  "role_matches": 35,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0038, quality 0.641)",
              "stats": {
                "expected_goals": 0.3692,
                "goals": 0.4192,
                "goal_rate": 0.4192,
                "shots_on_target": 0.9309,
                "total_shots": 2.2878,
                "expected_assists": 0.0384,
                "key_pass": 0.5453,
                "rating": 6.7803,
                "minutes": 84.23,
                "total_pass": 11.2824,
                "accurate_pass": 7.5773,
                "duels_won": 4.4109,
                "total_long_balls": 0.2864,
                "accurate_long_balls": 0.125,
                "total_opp_half_passes": 7.8435,
                "accurate_opp_half_passes": 4.6778,
                "crosses_total": 0.2663,
                "crosses_accurate": 0.0069,
                "touches": 23.1346,
                "possession_lost": 8.3128,
                "dispossessed": 0.3803,
                "duels_lost": 6.8209,
                "aerial_lost": 3.5716,
                "total_contest": 0.6402,
                "won_contest": 0.2,
                "ball_recovery": 1.0452,
                "challenges_lost": 0.6598,
                "fouls": 1.9089,
                "fouls_drawn": 1.3063,
                "assists": 0.0222,
                "assist_rate": 0.0222,
                "interceptions": 0.2541,
                "tackles_won": 0.6514,
                "tackles": 0.6768,
                "clearances": 1.1306,
                "blocks": 0.0903,
                "big_chances_created": 0.0047,
                "big_chances_missed": 0.4033,
                "xgot": 0.3351,
                "offsides": 1.167,
                "ball_carries": 4.9307,
                "total_progression": 2.4816,
                "progressive_carries": 0.4042,
                "shots_off_target": 1.3568
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0038,
                "reference_quality": 0.505,
                "history_matches": 48,
                "history_shrink": 0.0943,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0119)",
              "stats": {
                "expected_goals": 0.3692,
                "goals": 0.4257,
                "goal_rate": 0.4257,
                "shots_on_target": 0.9313,
                "total_shots": 2.2835,
                "expected_assists": 0.0384,
                "key_pass": 0.5453,
                "rating": 6.7803,
                "minutes": 84.23,
                "total_pass": 11.2824,
                "accurate_pass": 7.5773,
                "duels_won": 4.4109,
                "total_long_balls": 0.2864,
                "accurate_long_balls": 0.125,
                "total_opp_half_passes": 7.8435,
                "accurate_opp_half_passes": 4.6778,
                "crosses_total": 0.267,
                "crosses_accurate": 0.0069,
                "touches": 23.1346,
                "possession_lost": 8.3128,
                "dispossessed": 0.3803,
                "duels_lost": 6.8209,
                "aerial_lost": 3.5716,
                "total_contest": 0.6402,
                "won_contest": 0.2,
                "ball_recovery": 1.0452,
                "challenges_lost": 0.6598,
                "fouls": 1.8977,
                "fouls_drawn": 1.3099,
                "assists": 0.0219,
                "assist_rate": 0.0219,
                "interceptions": 0.2549,
                "tackles_won": 0.6475,
                "tackles": 0.6768,
                "clearances": 1.1306,
                "blocks": 0.0903,
                "big_chances_created": 0.0047,
                "big_chances_missed": 0.4033,
                "xgot": 0.3351,
                "offsides": 1.1532,
                "ball_carries": 4.9307,
                "total_progression": 2.4816,
                "progressive_carries": 0.4042,
                "shots_off_target": 1.3568
              },
              "params": {
                "blend_weight": 0.0119,
                "history_matches": 48,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9359,
                "prior_reliability": 0.1933,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "totalOffside",
                  "before": 1.167,
                  "after": 1.1532
                },
                {
                  "stat": "fouls",
                  "before": 1.9089,
                  "after": 1.8977
                },
                {
                  "stat": "goals",
                  "before": 0.4192,
                  "after": 0.4257
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3692,
                "goals": 0.4257,
                "goal_rate": 0.4257,
                "shots_on_target": 0.9313,
                "total_shots": 2.2881,
                "expected_assists": 0.0384,
                "key_pass": 0.5453,
                "rating": 6.7803,
                "minutes": 84.23,
                "total_pass": 11.2824,
                "accurate_pass": 7.5773,
                "duels_won": 4.4109,
                "total_long_balls": 0.2864,
                "accurate_long_balls": 0.125,
                "total_opp_half_passes": 7.8435,
                "accurate_opp_half_passes": 4.6778,
                "crosses_total": 0.267,
                "crosses_accurate": 0.0069,
                "touches": 23.1346,
                "possession_lost": 8.3128,
                "dispossessed": 0.3803,
                "duels_lost": 6.8209,
                "aerial_lost": 3.5716,
                "total_contest": 0.6402,
                "won_contest": 0.2,
                "ball_recovery": 1.0452,
                "challenges_lost": 0.6598,
                "fouls": 1.8977,
                "fouls_drawn": 1.3099,
                "assists": 0.0219,
                "assist_rate": 0.0219,
                "interceptions": 0.2549,
                "tackles_won": 0.6475,
                "tackles": 0.6768,
                "clearances": 1.1306,
                "blocks": 0.0903,
                "big_chances_created": 0.0047,
                "big_chances_missed": 0.4033,
                "xgot": 0.3351,
                "offsides": 1.1532,
                "ball_carries": 4.9307,
                "total_progression": 2.4816,
                "progressive_carries": 0.4042,
                "shots_off_target": 1.3568
              },
              "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.3496,
                "goals": 0.4031,
                "goal_rate": 0.4031,
                "shots_on_target": 0.8818,
                "total_shots": 2.1666,
                "expected_assists": 0.0384,
                "key_pass": 0.5453,
                "rating": 6.7803,
                "minutes": 84.23,
                "total_pass": 11.2824,
                "accurate_pass": 7.5773,
                "duels_won": 4.4109,
                "total_long_balls": 0.2864,
                "accurate_long_balls": 0.125,
                "total_opp_half_passes": 7.8435,
                "accurate_opp_half_passes": 4.6778,
                "crosses_total": 0.267,
                "crosses_accurate": 0.0069,
                "touches": 23.1346,
                "possession_lost": 8.3128,
                "dispossessed": 0.3803,
                "duels_lost": 6.8209,
                "aerial_lost": 3.5716,
                "total_contest": 0.6402,
                "won_contest": 0.2,
                "ball_recovery": 1.0452,
                "challenges_lost": 0.6598,
                "fouls": 1.8977,
                "fouls_drawn": 1.3099,
                "assists": 0.0219,
                "assist_rate": 0.0219,
                "interceptions": 0.2549,
                "tackles_won": 0.6475,
                "tackles": 0.6768,
                "clearances": 1.1306,
                "blocks": 0.0903,
                "big_chances_created": 0.0047,
                "big_chances_missed": 0.3819,
                "xgot": 0.3173,
                "offsides": 1.1532,
                "ball_carries": 4.9307,
                "total_progression": 2.4816,
                "progressive_carries": 0.4042,
                "shots_off_target": 1.2848,
                "duel_xg_multiplier": 0.9469,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Renato Veiga, Alexander Freeman",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.9469,
                  "skill_edge": -0.0241,
                  "height_edge": -0.012,
                  "attacker_skill": 0.6408,
                  "defender_skill": 0.6943,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Renato Veiga",
                      "market_value": 29000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7736
                    },
                    {
                      "player": "Alexander Freeman",
                      "market_value": 13800000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.615
                    }
                  ],
                  "xg_override": 0.3496
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.2881,
                  "after": 2.1666
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.3568,
                  "after": 1.2848
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.9313,
                  "after": 0.8818
                },
                {
                  "stat": "goals",
                  "before": 0.4257,
                  "after": 0.4031
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.4033,
                  "after": 0.3819
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3692,
                  "after": 0.3496
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.3351,
                  "after": 0.3173
                }
              ]
            },
            {
              "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.3496,
                "goal_rate": 0.4031,
                "goals": 0,
                "shots_on_target": 0.8818,
                "total_shots": 2.1666,
                "expected_assists": 0.0384,
                "key_pass": 0.5453,
                "rating": 6.7803,
                "minutes": 84.23,
                "total_pass": 11.2824,
                "accurate_pass": 7.5773,
                "duels_won": 4.4109,
                "total_long_balls": 0.2864,
                "accurate_long_balls": 0.125,
                "total_opp_half_passes": 7.8435,
                "accurate_opp_half_passes": 4.6778,
                "crosses_total": 0.267,
                "crosses_accurate": 0.0069,
                "touches": 23.1346,
                "possession_lost": 8.3128,
                "dispossessed": 0.3803,
                "duels_lost": 6.8209,
                "aerial_lost": 3.5716,
                "total_contest": 0.6402,
                "won_contest": 0.2,
                "ball_recovery": 1.0452,
                "challenges_lost": 0.6598,
                "fouls": 1.8977,
                "fouls_drawn": 1.3099,
                "assist_rate": 0.0219,
                "assists": 0,
                "interceptions": 0.2549,
                "tackles_won": 0.6475,
                "tackles": 0.6768,
                "clearances": 1.1306,
                "blocks": 0.0903,
                "big_chances_created": 0.0047,
                "big_chances_missed": 0.3819,
                "xgot": 0.3173,
                "offsides": 1.1532,
                "ball_carries": 4.9307,
                "total_progression": 2.4816,
                "progressive_carries": 0.4042,
                "shots_off_target": 1.2848,
                "duel_xg_multiplier": 0.9469,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "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.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "expected_goals": 0.4135,
                "goal_rate": 0.4031,
                "goals": 0,
                "shots_on_target": 0.8818,
                "total_shots": 2.1666,
                "expected_assists": 0.0422,
                "key_pass": 0.5453,
                "rating": 6.7803,
                "minutes": 84.23,
                "total_pass": 11.2824,
                "accurate_pass": 7.5773,
                "duels_won": 4.4109,
                "total_long_balls": 0.2864,
                "accurate_long_balls": 0.125,
                "total_opp_half_passes": 7.8435,
                "accurate_opp_half_passes": 4.6778,
                "crosses_total": 0.267,
                "crosses_accurate": 0.0069,
                "touches": 23.1346,
                "possession_lost": 8.3128,
                "dispossessed": 0.3803,
                "duels_lost": 6.8209,
                "aerial_lost": 3.5716,
                "total_contest": 0.6402,
                "won_contest": 0.2,
                "ball_recovery": 1.0452,
                "challenges_lost": 0.6598,
                "fouls": 1.8977,
                "fouls_drawn": 1.3099,
                "assist_rate": 0.0219,
                "assists": 0,
                "interceptions": 0.2549,
                "tackles_won": 0.6475,
                "tackles": 0.6768,
                "clearances": 1.1306,
                "blocks": 0.0903,
                "big_chances_created": 0.0047,
                "big_chances_missed": 0.3819,
                "xgot": 0.3752,
                "offsides": 1.1532,
                "ball_carries": 4.9307,
                "total_progression": 2.4816,
                "progressive_carries": 0.4042,
                "shots_off_target": 1.2848,
                "duel_xg_multiplier": 0.9469,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1339,
                "creation_factor": 0.8133
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.3496,
                  "after": 0.4135
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 74.0)",
              "stats": {
                "expected_goals": 0.4135,
                "goal_rate": 0.4031,
                "goals": 0,
                "shots_on_target": 0.8818,
                "total_shots": 2.1666,
                "expected_assists": 0.0422,
                "key_pass": 0.5453,
                "rating": 6.7803,
                "minutes": 84.23,
                "total_pass": 11.2824,
                "accurate_pass": 7.5773,
                "duels_won": 4.4109,
                "total_long_balls": 0.2864,
                "accurate_long_balls": 0.125,
                "total_opp_half_passes": 7.8435,
                "accurate_opp_half_passes": 4.6778,
                "crosses_total": 0.267,
                "crosses_accurate": 0.0069,
                "touches": 23.1346,
                "possession_lost": 8.3128,
                "dispossessed": 0.3803,
                "duels_lost": 6.8209,
                "aerial_lost": 3.5716,
                "total_contest": 0.6402,
                "won_contest": 0.2,
                "ball_recovery": 1.0452,
                "challenges_lost": 0.6598,
                "fouls": 1.8977,
                "fouls_drawn": 1.3099,
                "assist_rate": 0.0219,
                "assists": 0,
                "interceptions": 0.2549,
                "tackles_won": 0.6475,
                "tackles": 0.6768,
                "clearances": 1.1306,
                "blocks": 0.0903,
                "big_chances_created": 0.0047,
                "big_chances_missed": 0.3819,
                "xgot": 0.3752,
                "offsides": 1.1532,
                "ball_carries": 4.9307,
                "total_progression": 2.4816,
                "progressive_carries": 0.4042,
                "shots_off_target": 1.2848,
                "duel_xg_multiplier": 0.9469,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1339,
                "creation_factor": 0.8133,
                "fifa_overall": 74.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": 3459,
                "fifa_rank": 2903.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.4135,
                "goal_rate": 0.4031,
                "goals": 1,
                "shots_on_target": 0.8818,
                "total_shots": 2.1666,
                "expected_assists": 0.0422,
                "key_pass": 0.5453,
                "rating": 6.7803,
                "minutes": 84.23,
                "total_pass": 11.2824,
                "accurate_pass": 7.5773,
                "duels_won": 4.4109,
                "total_long_balls": 0.2864,
                "accurate_long_balls": 0.125,
                "total_opp_half_passes": 7.8435,
                "accurate_opp_half_passes": 4.6778,
                "crosses_total": 0.267,
                "crosses_accurate": 0.0069,
                "touches": 23.1346,
                "possession_lost": 8.3128,
                "dispossessed": 0.3803,
                "duels_lost": 6.8209,
                "aerial_lost": 3.5716,
                "total_contest": 0.6402,
                "won_contest": 0.2,
                "ball_recovery": 1.0452,
                "challenges_lost": 0.6598,
                "fouls": 1.8977,
                "fouls_drawn": 1.3099,
                "assist_rate": 0.0219,
                "assists": 0,
                "interceptions": 0.2549,
                "tackles_won": 0.6475,
                "tackles": 0.6768,
                "clearances": 1.1306,
                "blocks": 0.0903,
                "big_chances_created": 0.0047,
                "big_chances_missed": 0.3819,
                "xgot": 0.3752,
                "offsides": 1.1532,
                "ball_carries": 4.9307,
                "total_progression": 2.4816,
                "progressive_carries": 0.4042,
                "shots_off_target": 1.2848,
                "duel_xg_multiplier": 0.9469,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.3387,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1339,
                "creation_factor": 0.8133,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.3387,
                "goal_rate": 0.4031,
                "scorer_weight": 0.4689,
                "squad_weight_total": 1.3186,
                "weight_share": 0.3556,
                "finishing_factor": 1.1339,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.4135,
                "goal_rate": 0.4031,
                "goals": 1,
                "shots_on_target": 0.8818,
                "total_shots": 2.1666,
                "expected_assists": 0.0422,
                "key_pass": 0.5453,
                "rating": 6.7803,
                "minutes": 84.23,
                "total_pass": 11.2824,
                "accurate_pass": 7.5773,
                "duels_won": 4.4109,
                "total_long_balls": 0.2864,
                "accurate_long_balls": 0.125,
                "total_opp_half_passes": 7.8435,
                "accurate_opp_half_passes": 4.6778,
                "crosses_total": 0.267,
                "crosses_accurate": 0.0069,
                "touches": 23.1346,
                "possession_lost": 8.3128,
                "dispossessed": 0.3803,
                "duels_lost": 6.8209,
                "aerial_lost": 3.5716,
                "total_contest": 0.6402,
                "won_contest": 0.2,
                "ball_recovery": 1.0452,
                "challenges_lost": 0.6598,
                "fouls": 1.8977,
                "fouls_drawn": 1.3099,
                "assist_rate": 0.0219,
                "assists": 0,
                "interceptions": 0.2549,
                "tackles_won": 0.6475,
                "tackles": 0.6768,
                "clearances": 1.1306,
                "blocks": 0.0903,
                "big_chances_created": 0.0047,
                "big_chances_missed": 0.3819,
                "xgot": 0.3752,
                "offsides": 1.1532,
                "ball_carries": 4.9307,
                "total_progression": 2.4816,
                "progressive_carries": 0.4042,
                "shots_off_target": 1.2848,
                "duel_xg_multiplier": 0.9469,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.3387,
                "projected_assists": 0,
                "assist_probability": 0.0413,
                "finishing_factor": 1.1339,
                "creation_factor": 0.8133,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0413,
                "assist_rate": 0.0219,
                "provider_weight": 0.0343,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0378,
                "creation_factor": 0.8133,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Bryan Zaragoza": {
          "player_id": 1084730,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 15,
          "height": 165,
          "market_value": 7500000,
          "stats": {
            "expected_goals": 0.1058,
            "goal_rate": 0.1224,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.1401,
            "key_pass": 1,
            "rating": 6.9981,
            "minutes": 77,
            "total_pass": 21,
            "accurate_pass": 17,
            "duels_won": 5,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 14,
            "accurate_opp_half_passes": 10,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 40,
            "possession_lost": 12.8175,
            "dispossessed": 0.6564,
            "duels_lost": 5,
            "aerial_lost": 0,
            "total_contest": 4,
            "won_contest": 2,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "assist_rate": 0.0371,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1588,
            "offsides": 0,
            "ball_carries": 17,
            "total_progression": 98,
            "progressive_carries": 4,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.7784,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Renato Veiga, Alexander Freeman",
            "opponent_faced": "Renato Veiga, Alexander Freeman",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1004,
            "projected_assists": 0,
            "assist_probability": 0.1307,
            "finishing_factor": 1.2358,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 76,
                "rating": 6.7,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0211,
                "expected_assists": 0.0156,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 22,
                "accurate_pass": 14,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 4,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 82,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0275,
                "expected_assists": 0.2911,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 10,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 73,
                "rating": 8.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1212,
                "expected_assists": 0.0293,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "duels_won": 9,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 67,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0526,
                "expected_assists": 0.2013,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 29,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0702,
                "expected_assists": 0.1012,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 13,
                "key_pass": 2,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 10,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 15,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3444,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083136,
              "match_date": "2026-01-25",
              "home_team": "Real Sociedad",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3202,
                "expected_assists": 0.3853,
                "total_shots": 4,
                "shots_on_target": 2,
                "total_pass": 38,
                "accurate_pass": 33,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083226,
              "match_date": "2026-01-18",
              "home_team": "Celta Vigo",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 8.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.8167,
                "expected_assists": 0.2286,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 26,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 2,
                "duels_won": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083219,
              "match_date": "2026-01-12",
              "home_team": "Sevilla",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 67,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1125,
                "expected_assists": 0.0294,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 11,
                "key_pass": 1,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3033,
            "combined_rank_score": 1005.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 497.0,
            "sofascore_rating": 6.8611,
            "sofascore_appearances": 19.0,
            "fifa_rank": 1513.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9981,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bryan Zaragoza",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Dumitru Celeadnic",
                  "ranking": 3028
                },
                {
                  "player_name": "Leo Kapilevich",
                  "ranking": 3029
                },
                {
                  "player_name": "Jens Petter Hauge",
                  "ranking": 3030
                },
                {
                  "player_name": "James Justin",
                  "ranking": 3031
                },
                {
                  "player_name": "Jens Hofer",
                  "ranking": 3032
                }
              ],
              "lower": [
                {
                  "player_name": "Wout Weghorst",
                  "ranking": 3034
                },
                {
                  "player_name": "Jake Azzopardi",
                  "ranking": 3035
                },
                {
                  "player_name": "Ki Hyun Lee",
                  "ranking": 3036
                },
                {
                  "player_name": "Jaume Cuéllar",
                  "ranking": 3037
                },
                {
                  "player_name": "Daniel Cordero",
                  "ranking": 3038
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 26,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 26,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9994,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 26 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.115,
                "goals": 0.1573,
                "goal_rate": 0.1573,
                "shots_on_target": 0.5008,
                "total_shots": 1.42,
                "expected_assists": 0.1276,
                "key_pass": 1.2941,
                "rating": 6.9981,
                "minutes": 77.0,
                "total_pass": 21.4274,
                "accurate_pass": 16.591,
                "duels_won": 4.7397,
                "total_long_balls": 2.3198,
                "accurate_long_balls": 1.1934,
                "total_opp_half_passes": 14.2562,
                "accurate_opp_half_passes": 10.3787,
                "crosses_total": 3.8502,
                "crosses_accurate": 1.0727,
                "touches": 39.5343,
                "possession_lost": 12.8252,
                "dispossessed": 0.6568,
                "duels_lost": 4.5949,
                "aerial_lost": 0.415,
                "total_contest": 3.9153,
                "won_contest": 1.8294,
                "ball_recovery": 2.3303,
                "challenges_lost": 0.8816,
                "fouls": 0.5557,
                "fouls_drawn": 2.088,
                "assists": 0.0371,
                "assist_rate": 0.0371,
                "interceptions": 0.0315,
                "tackles_won": 0.519,
                "tackles": 0.7907,
                "clearances": 0.1371,
                "blocks": 0.0,
                "big_chances_created": 0.1913,
                "big_chances_missed": 0.0,
                "xgot": 0.1726,
                "offsides": 0.371,
                "ball_carries": 17.0872,
                "total_progression": 97.975,
                "progressive_carries": 4.1364,
                "shots_off_target": 0.9192
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.1522,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1294,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.11,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0935,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0795,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0675,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0574,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-01-25",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0488,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-01-18",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0415,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-01-12",
                    "opponent": "Sevilla",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0353,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.0912,
                  "accuratePass": 14.1619,
                  "totalOppositionHalfPasses": 12.5285,
                  "accurateOppositionHalfPasses": 8.7059,
                  "totalShots": 1.2397
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.11502204090356827,
                    "model_output": 0.115,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0549
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0477
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0112
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0104
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.0571,
                      "total": 0.115,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.246894
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.211188
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.056617
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.05579
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.053005
                        }
                      ],
                      "others_margin": -0.402966
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.15729986131191254,
                    "model_output": 0.1573,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0669
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0318
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0144
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0117
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.01
                        }
                      ],
                      "others": -0.0422,
                      "total": 0.1573,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.28812
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.12644
                        },
                        {
                          "name": "goals",
                          "margin": -0.062874
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.054281
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.0488
                        }
                      ],
                      "others_margin": -0.238267
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5007539391517639,
                    "model_output": 0.5008,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1473
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0561
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0406
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0238
                        },
                        {
                          "name": "goals",
                          "contribution": -0.02
                        }
                      ],
                      "others": -0.0382,
                      "total": 0.5008,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.24428
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.0861
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.067335
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.041772
                        },
                        {
                          "name": "goals",
                          "margin": -0.036371
                        }
                      ],
                      "others_margin": -0.07357
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.4199587106704712,
                    "model_output": 1.42,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3887
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1574
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0736
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.054
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.042
                        }
                      ],
                      "others": -0.0219,
                      "total": 1.42,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.388716
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.157376
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.073583
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.054027
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.04197
                        }
                      ],
                      "others_margin": -0.021951
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.12758690118789673,
                    "model_output": 0.1276,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0136
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0078
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0055
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0054
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0045
                        }
                      ],
                      "others": 0.0265,
                      "total": 0.1276,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.192156
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.095078
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.062481
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.057438
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.045266
                        }
                      ],
                      "others_margin": 0.232695
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.294106364250183,
                    "model_output": 1.2941,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2138
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0747
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0522
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0508
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0258
                        }
                      ],
                      "others": 0.1901,
                      "total": 1.2941,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.271065
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.079737
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.052132
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.048285
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.0236
                        }
                      ],
                      "others_margin": 0.158805
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.998050689697266,
                    "model_output": 6.9981,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0557
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0386
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0373
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0218
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0193
                        }
                      ],
                      "others": 0.0545,
                      "total": 6.998,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.055679
                        },
                        {
                          "name": "rating",
                          "margin": 0.03861
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.03735
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.021846
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.019315
                        }
                      ],
                      "others_margin": 0.054405
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 26,
                  "role_matches": 17,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9994, quality 0.493)",
              "stats": {
                "expected_goals": 0.115,
                "goals": 0.1572,
                "goal_rate": 0.1572,
                "shots_on_target": 0.5005,
                "total_shots": 1.4191,
                "expected_assists": 0.1275,
                "key_pass": 1.2933,
                "rating": 6.9981,
                "minutes": 77.0,
                "total_pass": 21.4145,
                "accurate_pass": 16.581,
                "duels_won": 4.7369,
                "total_long_balls": 2.3184,
                "accurate_long_balls": 1.1927,
                "total_opp_half_passes": 14.2476,
                "accurate_opp_half_passes": 10.3725,
                "crosses_total": 3.8479,
                "crosses_accurate": 1.0721,
                "touches": 39.5106,
                "possession_lost": 12.8175,
                "dispossessed": 0.6564,
                "duels_lost": 4.5921,
                "aerial_lost": 0.4148,
                "total_contest": 3.913,
                "won_contest": 1.8283,
                "ball_recovery": 2.3289,
                "challenges_lost": 0.8811,
                "fouls": 0.5554,
                "fouls_drawn": 2.0867,
                "assists": 0.0371,
                "assist_rate": 0.0371,
                "interceptions": 0.0315,
                "tackles_won": 0.5187,
                "tackles": 0.7902,
                "clearances": 0.137,
                "blocks": 0.0,
                "big_chances_created": 0.1912,
                "big_chances_missed": 0.0,
                "xgot": 0.1725,
                "offsides": 0.3708,
                "ball_carries": 17.0769,
                "total_progression": 97.9162,
                "progressive_carries": 4.1339,
                "shots_off_target": 0.9186
              },
              "params": {
                "market_value_eur": 7500000,
                "quality_factor": 0.4927,
                "boost_factor": 0.9994,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.115,
                "goals": 0.1572,
                "goal_rate": 0.1572,
                "shots_on_target": 0.5005,
                "total_shots": 1.4191,
                "expected_assists": 0.1275,
                "key_pass": 1.2933,
                "rating": 6.9981,
                "minutes": 77.0,
                "total_pass": 21.4145,
                "accurate_pass": 16.581,
                "duels_won": 4.7369,
                "total_long_balls": 2.3184,
                "accurate_long_balls": 1.1927,
                "total_opp_half_passes": 14.2476,
                "accurate_opp_half_passes": 10.3725,
                "crosses_total": 3.8479,
                "crosses_accurate": 1.0721,
                "touches": 39.5106,
                "possession_lost": 12.8175,
                "dispossessed": 0.6564,
                "duels_lost": 4.5921,
                "aerial_lost": 0.4148,
                "total_contest": 3.913,
                "won_contest": 1.8283,
                "ball_recovery": 2.3289,
                "challenges_lost": 0.8811,
                "fouls": 0.5554,
                "fouls_drawn": 2.0867,
                "assists": 0.0371,
                "assist_rate": 0.0371,
                "interceptions": 0.0315,
                "tackles_won": 0.5187,
                "tackles": 0.7902,
                "clearances": 0.137,
                "blocks": 0.0,
                "big_chances_created": 0.1912,
                "big_chances_missed": 0.0,
                "xgot": 0.1725,
                "offsides": 0.3708,
                "ball_carries": 17.0769,
                "total_progression": 97.9162,
                "progressive_carries": 4.1339,
                "shots_off_target": 0.9186
              },
              "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.0895,
                "goals": 0.1224,
                "goal_rate": 0.1224,
                "shots_on_target": 0.3896,
                "total_shots": 1.1046,
                "expected_assists": 0.1275,
                "key_pass": 1.2933,
                "rating": 6.9981,
                "minutes": 77.0,
                "total_pass": 21.4145,
                "accurate_pass": 16.581,
                "duels_won": 4.7369,
                "total_long_balls": 2.3184,
                "accurate_long_balls": 1.1927,
                "total_opp_half_passes": 14.2476,
                "accurate_opp_half_passes": 10.3725,
                "crosses_total": 3.8479,
                "crosses_accurate": 1.0721,
                "touches": 39.5106,
                "possession_lost": 12.8175,
                "dispossessed": 0.6564,
                "duels_lost": 4.5921,
                "aerial_lost": 0.4148,
                "total_contest": 3.913,
                "won_contest": 1.8283,
                "ball_recovery": 2.3289,
                "challenges_lost": 0.8811,
                "fouls": 0.5554,
                "fouls_drawn": 2.0867,
                "assists": 0.0371,
                "assist_rate": 0.0371,
                "interceptions": 0.0315,
                "tackles_won": 0.5187,
                "tackles": 0.7902,
                "clearances": 0.137,
                "blocks": 0.0,
                "big_chances_created": 0.1912,
                "big_chances_missed": 0.0,
                "xgot": 0.1343,
                "offsides": 0.3708,
                "ball_carries": 17.0769,
                "total_progression": 97.9162,
                "progressive_carries": 4.1339,
                "shots_off_target": 0.715,
                "duel_xg_multiplier": 0.7784,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Renato Veiga, Alexander Freeman",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.7784,
                  "skill_edge": -0.0907,
                  "height_edge": -0.06,
                  "attacker_skill": 0.4927,
                  "defender_skill": 0.6943,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Renato Veiga",
                      "market_value": 29000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7736
                    },
                    {
                      "player": "Alexander Freeman",
                      "market_value": 13800000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.615
                    }
                  ],
                  "xg_override": 0.0895
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.4191,
                  "after": 1.1046
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9186,
                  "after": 0.715
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5005,
                  "after": 0.3896
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1725,
                  "after": 0.1343
                },
                {
                  "stat": "goals",
                  "before": 0.1572,
                  "after": 0.1224
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.115,
                  "after": 0.0895
                }
              ]
            },
            {
              "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.0895,
                "goal_rate": 0.1224,
                "goals": 0,
                "shots_on_target": 0.3896,
                "total_shots": 1.1046,
                "expected_assists": 0.1275,
                "key_pass": 1.2933,
                "rating": 6.9981,
                "minutes": 77.0,
                "total_pass": 21.4145,
                "accurate_pass": 16.581,
                "duels_won": 4.7369,
                "total_long_balls": 2.3184,
                "accurate_long_balls": 1.1927,
                "total_opp_half_passes": 14.2476,
                "accurate_opp_half_passes": 10.3725,
                "crosses_total": 3.8479,
                "crosses_accurate": 1.0721,
                "touches": 39.5106,
                "possession_lost": 12.8175,
                "dispossessed": 0.6564,
                "duels_lost": 4.5921,
                "aerial_lost": 0.4148,
                "total_contest": 3.913,
                "won_contest": 1.8283,
                "ball_recovery": 2.3289,
                "challenges_lost": 0.8811,
                "fouls": 0.5554,
                "fouls_drawn": 2.0867,
                "assist_rate": 0.0371,
                "assists": 0,
                "interceptions": 0.0315,
                "tackles_won": 0.5187,
                "tackles": 0.7902,
                "clearances": 0.137,
                "blocks": 0.0,
                "big_chances_created": 0.1912,
                "big_chances_missed": 0.0,
                "xgot": 0.1343,
                "offsides": 0.3708,
                "ball_carries": 17.0769,
                "total_progression": 97.9162,
                "progressive_carries": 4.1339,
                "shots_off_target": 0.715,
                "duel_xg_multiplier": 0.7784,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "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.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "expected_goals": 0.1058,
                "goal_rate": 0.1224,
                "goals": 0,
                "shots_on_target": 0.3896,
                "total_shots": 1.1046,
                "expected_assists": 0.1401,
                "key_pass": 1.2933,
                "rating": 6.9981,
                "minutes": 77.0,
                "total_pass": 21.4145,
                "accurate_pass": 16.581,
                "duels_won": 4.7369,
                "total_long_balls": 2.3184,
                "accurate_long_balls": 1.1927,
                "total_opp_half_passes": 14.2476,
                "accurate_opp_half_passes": 10.3725,
                "crosses_total": 3.8479,
                "crosses_accurate": 1.0721,
                "touches": 39.5106,
                "possession_lost": 12.8175,
                "dispossessed": 0.6564,
                "duels_lost": 4.5921,
                "aerial_lost": 0.4148,
                "total_contest": 3.913,
                "won_contest": 1.8283,
                "ball_recovery": 2.3289,
                "challenges_lost": 0.8811,
                "fouls": 0.5554,
                "fouls_drawn": 2.0867,
                "assist_rate": 0.0371,
                "assists": 0,
                "interceptions": 0.0315,
                "tackles_won": 0.5187,
                "tackles": 0.7902,
                "clearances": 0.137,
                "blocks": 0.0,
                "big_chances_created": 0.1912,
                "big_chances_missed": 0.0,
                "xgot": 0.1588,
                "offsides": 0.3708,
                "ball_carries": 17.0769,
                "total_progression": 97.9162,
                "progressive_carries": 4.1339,
                "shots_off_target": 0.715,
                "duel_xg_multiplier": 0.7784,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2358,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0895,
                  "after": 0.1058
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1275,
                  "after": 0.1401
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.1058,
                "goal_rate": 0.1224,
                "goals": 0,
                "shots_on_target": 0.3896,
                "total_shots": 1.1046,
                "expected_assists": 0.1401,
                "key_pass": 1.2933,
                "rating": 6.9981,
                "minutes": 77.0,
                "total_pass": 21.4145,
                "accurate_pass": 16.581,
                "duels_won": 4.7369,
                "total_long_balls": 2.3184,
                "accurate_long_balls": 1.1927,
                "total_opp_half_passes": 14.2476,
                "accurate_opp_half_passes": 10.3725,
                "crosses_total": 3.8479,
                "crosses_accurate": 1.0721,
                "touches": 39.5106,
                "possession_lost": 12.8175,
                "dispossessed": 0.6564,
                "duels_lost": 4.5921,
                "aerial_lost": 0.4148,
                "total_contest": 3.913,
                "won_contest": 1.8283,
                "ball_recovery": 2.3289,
                "challenges_lost": 0.8811,
                "fouls": 0.5554,
                "fouls_drawn": 2.0867,
                "assist_rate": 0.0371,
                "assists": 0,
                "interceptions": 0.0315,
                "tackles_won": 0.5187,
                "tackles": 0.7902,
                "clearances": 0.137,
                "blocks": 0.0,
                "big_chances_created": 0.1912,
                "big_chances_missed": 0.0,
                "xgot": 0.1588,
                "offsides": 0.3708,
                "ball_carries": 17.0769,
                "total_progression": 97.9162,
                "progressive_carries": 4.1339,
                "shots_off_target": 0.715,
                "duel_xg_multiplier": 0.7784,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2358,
                "creation_factor": 0.8,
                "fifa_overall": 77.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": 3033,
                "fifa_rank": 1513.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.1058,
                "goal_rate": 0.1224,
                "goals": 0,
                "shots_on_target": 0.3896,
                "total_shots": 1.1046,
                "expected_assists": 0.1401,
                "key_pass": 1.2933,
                "rating": 6.9981,
                "minutes": 77.0,
                "total_pass": 21.4145,
                "accurate_pass": 16.581,
                "duels_won": 4.7369,
                "total_long_balls": 2.3184,
                "accurate_long_balls": 1.1927,
                "total_opp_half_passes": 14.2476,
                "accurate_opp_half_passes": 10.3725,
                "crosses_total": 3.8479,
                "crosses_accurate": 1.0721,
                "touches": 39.5106,
                "possession_lost": 12.8175,
                "dispossessed": 0.6564,
                "duels_lost": 4.5921,
                "aerial_lost": 0.4148,
                "total_contest": 3.913,
                "won_contest": 1.8283,
                "ball_recovery": 2.3289,
                "challenges_lost": 0.8811,
                "fouls": 0.5554,
                "fouls_drawn": 2.0867,
                "assist_rate": 0.0371,
                "assists": 0,
                "interceptions": 0.0315,
                "tackles_won": 0.5187,
                "tackles": 0.7902,
                "clearances": 0.137,
                "blocks": 0.0,
                "big_chances_created": 0.1912,
                "big_chances_missed": 0.0,
                "xgot": 0.1588,
                "offsides": 0.3708,
                "ball_carries": 17.0769,
                "total_progression": 97.9162,
                "progressive_carries": 4.1339,
                "shots_off_target": 0.715,
                "duel_xg_multiplier": 0.7784,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1004,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2358,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1004,
                "goal_rate": 0.1224,
                "scorer_weight": 0.1307,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0992,
                "finishing_factor": 1.2358,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.1058,
                "goal_rate": 0.1224,
                "goals": 0,
                "shots_on_target": 0.3896,
                "total_shots": 1.1046,
                "expected_assists": 0.1401,
                "key_pass": 1.2933,
                "rating": 6.9981,
                "minutes": 77.0,
                "total_pass": 21.4145,
                "accurate_pass": 16.581,
                "duels_won": 4.7369,
                "total_long_balls": 2.3184,
                "accurate_long_balls": 1.1927,
                "total_opp_half_passes": 14.2476,
                "accurate_opp_half_passes": 10.3725,
                "crosses_total": 3.8479,
                "crosses_accurate": 1.0721,
                "touches": 39.5106,
                "possession_lost": 12.8175,
                "dispossessed": 0.6564,
                "duels_lost": 4.5921,
                "aerial_lost": 0.4148,
                "total_contest": 3.913,
                "won_contest": 1.8283,
                "ball_recovery": 2.3289,
                "challenges_lost": 0.8811,
                "fouls": 0.5554,
                "fouls_drawn": 2.0867,
                "assist_rate": 0.0371,
                "assists": 0,
                "interceptions": 0.0315,
                "tackles_won": 0.5187,
                "tackles": 0.7902,
                "clearances": 0.137,
                "blocks": 0.0,
                "big_chances_created": 0.1912,
                "big_chances_missed": 0.0,
                "xgot": 0.1588,
                "offsides": 0.3708,
                "ball_carries": 17.0769,
                "total_progression": 97.9162,
                "progressive_carries": 4.1339,
                "shots_off_target": 0.715,
                "duel_xg_multiplier": 0.7784,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1004,
                "projected_assists": 0,
                "assist_probability": 0.1307,
                "finishing_factor": 1.2358,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1307,
                "assist_rate": 0.0371,
                "provider_weight": 0.1121,
                "squad_weight_total": 0.9085,
                "weight_share": 0.1234,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Javier Hernández": {
          "player_id": 1514913,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 28,
          "height": 175,
          "market_value": 6400000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.152,
            "assist_rate": 0.3051,
            "assists": 1,
            "expected_goals": 0.1212,
            "goal_rate": 0.1037,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7167,
            "minutes": 77,
            "total_pass": 19,
            "accurate_pass": 15,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 10,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 37,
            "possession_lost": 14.1304,
            "dispossessed": 3.2155,
            "duels_lost": 8,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 3,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0918,
            "ball_carries": 13,
            "total_progression": 83,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9088,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.9,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.358,
            "pressing_faced": "LOW",
            "matchup_zone": "CAM vs CM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Santi Comesaña",
            "opponent_faced": "Santi Comesaña",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1141,
            "projected_assists": 1,
            "assist_probability": 0.141,
            "finishing_factor": 1.0079,
            "creation_factor": 1.25,
            "fifa_overall": 86.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 76,
                "rating": 6.5,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1864,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 19,
                "accurate_pass": 14,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 4,
                "ball_recovery": 7,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 73,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0356,
                "expected_assists": 0.0037,
                "total_shots": 1,
                "total_pass": 12,
                "accurate_pass": 9,
                "interceptions": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 57,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1239,
                "expected_assists": 0.0245,
                "total_shots": 1,
                "total_pass": 20,
                "accurate_pass": 16,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1111,
                "expected_assists": 0.0952,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 27,
                "key_pass": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 74,
                "rating": 6.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.3039,
                "expected_assists": 0.1902,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 11,
                "key_pass": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 80,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0157,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 17,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0603,
                "expected_assists": 0.0188,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 18,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 70,
                "rating": 6.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0962,
                "expected_assists": 0.08,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 8,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 75,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.2864,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 15,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 82,
                "rating": 7.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1872,
                "expected_assists": 0.3474,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 26,
                "accurate_pass": 19,
                "key_pass": 3,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 198,
            "combined_rank_score": 125.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 1.0,
            "fifa_rank": 93.0,
            "fifa_overall": 86.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7167,
            "source_file": "data/player_rankings.csv",
            "player_name": "Javier Hernández",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yarden Shua",
                  "ranking": 193
                },
                {
                  "player_name": "Antonio Sivera",
                  "ranking": 194
                },
                {
                  "player_name": "Igor Lichnovsky",
                  "ranking": 195
                },
                {
                  "player_name": "Luis Rojas",
                  "ranking": 196
                },
                {
                  "player_name": "Armandas Kučys",
                  "ranking": 197
                }
              ],
              "lower": [
                {
                  "player_name": "Daler Tukhsanov",
                  "ranking": 199
                },
                {
                  "player_name": "Azamat Soyibov",
                  "ranking": 200
                },
                {
                  "player_name": "Kervin Andrade",
                  "ranking": 201
                },
                {
                  "player_name": "Guillermo Maripán",
                  "ranking": 202
                },
                {
                  "player_name": "Emil Tîmbur",
                  "ranking": 203
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.775,
          "history_matches": 10,
          "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": 10,
            "data_confidence": 0.775,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9974,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 224.0,
              "goals_per90": 0.0,
              "assists_per90": 1.2,
              "shots_per90": 1.21,
              "shots_on_target_pct": 33.3,
              "prior_reliability": 0.1667
            },
            "rationale": "XGBoost regressor (M_service) evaluated 10 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Espanyol, rel: 0.17, gls/90: 0.0, ast/90: 1.2)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 1.2066,
                "expected_assists": 0.1387,
                "assists": 0.2786,
                "assist_rate": 0.2786,
                "expected_goals": 0.1131,
                "goals": 0.1187,
                "goal_rate": 0.1187,
                "shots_on_target": 0.4758,
                "total_shots": 1.3794,
                "rating": 6.7167,
                "minutes": 77.28,
                "total_pass": 18.9674,
                "accurate_pass": 15.113,
                "duels_won": 3.4241,
                "total_long_balls": 1.0618,
                "accurate_long_balls": 0.3539,
                "total_own_half_passes": 6.1079,
                "accurate_own_half_passes": 5.3593,
                "total_opp_half_passes": 12.8596,
                "accurate_opp_half_passes": 9.7538,
                "crosses_total": 2.0158,
                "crosses_accurate": 0.3843,
                "touches": 37.406,
                "possession_lost": 14.1672,
                "dispossessed": 3.2239,
                "duels_lost": 8.3492,
                "aerial_won": 0.1349,
                "aerial_lost": 0.7195,
                "interceptions": 0.5872,
                "tackles_won": 0.574,
                "tackles": 0.8109,
                "clearances": 0.0433,
                "total_contest": 2.8967,
                "won_contest": 1.426,
                "challenges_lost": 1.3223,
                "fouls": 1.7784,
                "fouls_drawn": 1.0524,
                "blocks": 0.0,
                "big_chances_created": 0.4233,
                "big_chances_missed": 0.0,
                "xgot": 0.0856,
                "ball_carries": 13.3947,
                "total_progression": 83.7079,
                "progressive_carries": 2.3928,
                "shots_off_target": 0.9036
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.1868,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.1588,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 57.0,
                    "is_starting": true,
                    "weight": 0.1349,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1147,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.0975,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0829,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0704,
                    "rating": 5.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0599,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0509,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0433,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 10.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.2176,
                  "creative_index": 0.7088,
                  "expectedGoals": 0.0828,
                  "expectedAssists": 0.1052,
                  "totalOppositionHalfPasses": 12.8596
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.206639051437378,
                    "model_output": 1.2066,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1154
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.1251
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0594
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0514
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0457
                        }
                      ],
                      "others": 0.1295,
                      "total": 1.2066,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121859
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.117206
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.053951
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.046901
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.041545
                        }
                      ],
                      "others_margin": 0.113595
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.13868099451065063,
                    "model_output": 0.1387,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0112
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0079
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.008
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0068
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.006
                        }
                      ],
                      "others": 0.0139,
                      "total": 0.1387,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.123603
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.078804
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.073677
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.059339
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.0492
                        }
                      ],
                      "others_margin": 0.105578
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.2786003351211548,
                    "model_output": 0.2786,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "dispossessed",
                          "contribution": 0.0238
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0153
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0169
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0181
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0157
                        }
                      ],
                      "others": 0.1038,
                      "total": 0.2786,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "dispossessed",
                          "margin": 0.247104
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.131846
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.12763
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.120401
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.094337
                        }
                      ],
                      "others_margin": 0.46554
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.11305273324251175,
                    "model_output": 0.1131,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0115
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0108
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0095
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0068
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0059
                        }
                      ],
                      "others": 0.0026,
                      "total": 0.1131,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118179
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.099405
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.080438
                        },
                        {
                          "name": "goals",
                          "margin": -0.056982
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.051645
                        }
                      ],
                      "others_margin": 0.022882
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.11871647089719772,
                    "model_output": 0.1187,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0213
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0121
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0115
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0042
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0039
                        }
                      ],
                      "others": 0.0027,
                      "total": 0.1187,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.202234
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.10954
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.104516
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.035899
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.033113
                        }
                      ],
                      "others_margin": 0.023017
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.4757968485355377,
                    "model_output": 0.4758,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0678
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0535
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0281
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0251
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0101
                        }
                      ],
                      "others": 0.0493,
                      "total": 0.4758,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.193106
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12978
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.066123
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.059152
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.023291
                        }
                      ],
                      "others_margin": 0.109386
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.3793613910675049,
                    "model_output": 1.3794,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.1687
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1421
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0471
                        },
                        {
                          "name": "goalAssist",
                          "contribution": 0.0419
                        },
                        {
                          "name": "goals",
                          "contribution": -0.039
                        }
                      ],
                      "others": 0.0345,
                      "total": 1.3794,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.168653
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.142077
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.047085
                        },
                        {
                          "name": "goalAssist",
                          "margin": 0.041918
                        },
                        {
                          "name": "goals",
                          "margin": -0.039015
                        }
                      ],
                      "others_margin": 0.034534
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.71665620803833,
                    "model_output": 6.7167,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0386
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0362
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.027
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0229
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.022
                        }
                      ],
                      "others": -0.0376,
                      "total": 6.7167,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.038609
                        },
                        {
                          "name": "rating",
                          "margin": -0.036215
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.027038
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.022877
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.022028
                        }
                      ],
                      "others_margin": -0.037528
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 10,
                  "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 0.9974, quality 0.479)",
              "stats": {
                "key_pass": 1.2035,
                "expected_assists": 0.1383,
                "assists": 0.2779,
                "assist_rate": 0.2779,
                "expected_goals": 0.1128,
                "goals": 0.1184,
                "goal_rate": 0.1184,
                "shots_on_target": 0.4746,
                "total_shots": 1.3759,
                "rating": 6.7167,
                "minutes": 77.28,
                "total_pass": 18.9181,
                "accurate_pass": 15.0737,
                "duels_won": 3.4152,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.353,
                "total_own_half_passes": 6.092,
                "accurate_own_half_passes": 5.3454,
                "total_opp_half_passes": 12.8262,
                "accurate_opp_half_passes": 9.7284,
                "crosses_total": 2.0106,
                "crosses_accurate": 0.3833,
                "touches": 37.3087,
                "possession_lost": 14.1304,
                "dispossessed": 3.2155,
                "duels_lost": 8.3275,
                "aerial_won": 0.1345,
                "aerial_lost": 0.7176,
                "interceptions": 0.5857,
                "tackles_won": 0.5725,
                "tackles": 0.8088,
                "clearances": 0.0432,
                "total_contest": 2.8892,
                "won_contest": 1.4223,
                "challenges_lost": 1.3189,
                "fouls": 1.7738,
                "fouls_drawn": 1.0497,
                "blocks": 0.0,
                "big_chances_created": 0.4222,
                "big_chances_missed": 0.0,
                "xgot": 0.0854,
                "ball_carries": 13.3599,
                "total_progression": 83.4903,
                "progressive_carries": 2.3866,
                "shots_off_target": 0.9013
              },
              "params": {
                "market_value_eur": 6400000,
                "quality_factor": 0.4793,
                "boost_factor": 0.9974,
                "reference_quality": 0.505,
                "history_matches": 10,
                "history_shrink": 0.3333,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0361)",
              "stats": {
                "key_pass": 1.2035,
                "expected_assists": 0.1383,
                "assists": 0.3051,
                "assist_rate": 0.3051,
                "expected_goals": 0.1128,
                "goals": 0.1141,
                "goal_rate": 0.1141,
                "shots_on_target": 0.4699,
                "total_shots": 1.3637,
                "rating": 6.7167,
                "minutes": 77.28,
                "total_pass": 18.9181,
                "accurate_pass": 15.0737,
                "duels_won": 3.4152,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.353,
                "total_own_half_passes": 6.092,
                "accurate_own_half_passes": 5.3454,
                "total_opp_half_passes": 12.8262,
                "accurate_opp_half_passes": 9.7284,
                "crosses_total": 1.9504,
                "crosses_accurate": 0.3833,
                "touches": 37.3087,
                "possession_lost": 14.1304,
                "dispossessed": 3.2155,
                "duels_lost": 8.3275,
                "aerial_won": 0.1345,
                "aerial_lost": 0.7176,
                "interceptions": 0.5645,
                "tackles_won": 0.5766,
                "tackles": 0.8088,
                "clearances": 0.0432,
                "total_contest": 2.8892,
                "won_contest": 1.4223,
                "challenges_lost": 1.3189,
                "fouls": 1.809,
                "fouls_drawn": 1.0986,
                "blocks": 0.0,
                "big_chances_created": 0.4222,
                "big_chances_missed": 0.0,
                "xgot": 0.0854,
                "ball_carries": 13.3599,
                "total_progression": 83.4903,
                "progressive_carries": 2.3866,
                "shots_off_target": 0.9013
              },
              "params": {
                "blend_weight": 0.0361,
                "history_matches": 10,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8587,
                "prior_reliability": 0.1667,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.0106,
                  "after": 1.9504
                },
                {
                  "stat": "wasFouled",
                  "before": 1.0497,
                  "after": 1.0986
                },
                {
                  "stat": "fouls",
                  "before": 1.7738,
                  "after": 1.809
                },
                {
                  "stat": "goalAssist",
                  "before": 0.2779,
                  "after": 0.3051
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.5857,
                  "after": 0.5645
                },
                {
                  "stat": "totalShots",
                  "before": 1.3759,
                  "after": 1.3637
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.2035,
                "expected_assists": 0.1383,
                "assists": 0.3051,
                "assist_rate": 0.3051,
                "expected_goals": 0.1128,
                "goals": 0.1141,
                "goal_rate": 0.1141,
                "shots_on_target": 0.4699,
                "total_shots": 1.3712,
                "rating": 6.7167,
                "minutes": 77.28,
                "total_pass": 18.9181,
                "accurate_pass": 15.0737,
                "duels_won": 3.4152,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.353,
                "total_own_half_passes": 6.092,
                "accurate_own_half_passes": 5.3454,
                "total_opp_half_passes": 12.8262,
                "accurate_opp_half_passes": 9.7284,
                "crosses_total": 1.9504,
                "crosses_accurate": 0.3833,
                "touches": 37.3087,
                "possession_lost": 14.1304,
                "dispossessed": 3.2155,
                "duels_lost": 8.3275,
                "aerial_won": 0.1345,
                "aerial_lost": 0.7176,
                "interceptions": 0.5645,
                "tackles_won": 0.5766,
                "tackles": 0.8088,
                "clearances": 0.0432,
                "total_contest": 2.8892,
                "won_contest": 1.4223,
                "challenges_lost": 1.3189,
                "fouls": 1.809,
                "fouls_drawn": 1.0986,
                "blocks": 0.0,
                "big_chances_created": 0.4222,
                "big_chances_missed": 0.0,
                "xgot": 0.0854,
                "ball_carries": 13.3599,
                "total_progression": 83.4903,
                "progressive_carries": 2.3866,
                "shots_off_target": 0.9013
              },
              "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.2035,
                "expected_assists": 0.1383,
                "assists": 0.3051,
                "assist_rate": 0.3051,
                "expected_goals": 0.1025,
                "goals": 0.1037,
                "goal_rate": 0.1037,
                "shots_on_target": 0.427,
                "total_shots": 1.2461,
                "rating": 6.7167,
                "minutes": 77.28,
                "total_pass": 18.9181,
                "accurate_pass": 15.0737,
                "duels_won": 3.4152,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.353,
                "total_own_half_passes": 6.092,
                "accurate_own_half_passes": 5.3454,
                "total_opp_half_passes": 12.8262,
                "accurate_opp_half_passes": 9.7284,
                "crosses_total": 1.9504,
                "crosses_accurate": 0.3833,
                "touches": 37.3087,
                "possession_lost": 14.1304,
                "dispossessed": 3.2155,
                "duels_lost": 8.3275,
                "aerial_won": 0.9,
                "aerial_lost": 0.7176,
                "interceptions": 0.5645,
                "tackles_won": 0.5766,
                "tackles": 0.8088,
                "clearances": 0.0432,
                "total_contest": 2.8892,
                "won_contest": 1.4223,
                "challenges_lost": 1.3189,
                "fouls": 1.809,
                "fouls_drawn": 1.0986,
                "blocks": 0.0,
                "big_chances_created": 0.4222,
                "big_chances_missed": 0.0,
                "xgot": 0.0776,
                "ball_carries": 13.3599,
                "total_progression": 83.4903,
                "progressive_carries": 2.3866,
                "shots_off_target": 0.8191,
                "duel_xg_multiplier": 0.9088,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.358,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Santi Comesaña",
                  "matchup_zone": "CAM vs CM",
                  "duel_win_rate": 0.358,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9088,
                  "skill_edge": -0.014,
                  "height_edge": -0.048,
                  "attacker_skill": 0.4834,
                  "defender_skill": 0.5146,
                  "attacker_role": "CAM",
                  "attacker_mv_price_index": 0.95,
                  "defender_adjusted_parts": [
                    {
                      "player": "Santi Comesaña",
                      "market_value": 8400000,
                      "role": "CM",
                      "price_index": 0.9,
                      "adjusted_quality": 0.5146
                    }
                  ],
                  "xg_override": 0.1025
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.1345,
                  "after": 0.9
                },
                {
                  "stat": "totalShots",
                  "before": 1.3712,
                  "after": 1.2461
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9013,
                  "after": 0.8191
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4699,
                  "after": 0.427
                },
                {
                  "stat": "goals",
                  "before": 0.1141,
                  "after": 0.1037
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1128,
                  "after": 0.1025
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0854,
                  "after": 0.0776
                }
              ]
            },
            {
              "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.2035,
                "expected_assists": 0.1383,
                "assist_rate": 0.3051,
                "assists": 0,
                "expected_goals": 0.1025,
                "goal_rate": 0.1037,
                "goals": 0,
                "shots_on_target": 0.427,
                "total_shots": 1.2461,
                "rating": 6.7167,
                "minutes": 77.28,
                "total_pass": 18.9181,
                "accurate_pass": 15.0737,
                "duels_won": 3.4152,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.353,
                "total_own_half_passes": 6.092,
                "accurate_own_half_passes": 5.3454,
                "total_opp_half_passes": 12.8262,
                "accurate_opp_half_passes": 9.7284,
                "crosses_total": 1.9504,
                "crosses_accurate": 0.3833,
                "touches": 37.3087,
                "possession_lost": 14.1304,
                "dispossessed": 3.2155,
                "duels_lost": 8.3275,
                "aerial_won": 0.9,
                "aerial_lost": 0.7176,
                "interceptions": 0.5645,
                "tackles_won": 0.5766,
                "tackles": 0.8088,
                "clearances": 0.0432,
                "total_contest": 2.8892,
                "won_contest": 1.4223,
                "challenges_lost": 1.3189,
                "fouls": 1.809,
                "fouls_drawn": 1.0986,
                "blocks": 0.0,
                "big_chances_created": 0.4222,
                "big_chances_missed": 0.0,
                "xgot": 0.0776,
                "ball_carries": 13.3599,
                "total_progression": 83.4903,
                "progressive_carries": 2.3866,
                "shots_off_target": 0.8191,
                "duel_xg_multiplier": 0.9088,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.358,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "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.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "key_pass": 1.2035,
                "expected_assists": 0.152,
                "assist_rate": 0.3051,
                "assists": 0,
                "expected_goals": 0.1212,
                "goal_rate": 0.1037,
                "goals": 0,
                "shots_on_target": 0.427,
                "total_shots": 1.2461,
                "rating": 6.7167,
                "minutes": 77.28,
                "total_pass": 18.9181,
                "accurate_pass": 15.0737,
                "duels_won": 3.4152,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.353,
                "total_own_half_passes": 6.092,
                "accurate_own_half_passes": 5.3454,
                "total_opp_half_passes": 12.8262,
                "accurate_opp_half_passes": 9.7284,
                "crosses_total": 1.9504,
                "crosses_accurate": 0.3833,
                "touches": 37.3087,
                "possession_lost": 14.1304,
                "dispossessed": 3.2155,
                "duels_lost": 8.3275,
                "aerial_won": 0.9,
                "aerial_lost": 0.7176,
                "interceptions": 0.5645,
                "tackles_won": 0.5766,
                "tackles": 0.8088,
                "clearances": 0.0432,
                "total_contest": 2.8892,
                "won_contest": 1.4223,
                "challenges_lost": 1.3189,
                "fouls": 1.809,
                "fouls_drawn": 1.0986,
                "blocks": 0.0,
                "big_chances_created": 0.4222,
                "big_chances_missed": 0.0,
                "xgot": 0.0918,
                "ball_carries": 13.3599,
                "total_progression": 83.4903,
                "progressive_carries": 2.3866,
                "shots_off_target": 0.8191,
                "duel_xg_multiplier": 0.9088,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.358,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0079,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1025,
                  "after": 0.1212
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1383,
                  "after": 0.152
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 86.0)",
              "stats": {
                "key_pass": 1.2035,
                "expected_assists": 0.152,
                "assist_rate": 0.3051,
                "assists": 0,
                "expected_goals": 0.1212,
                "goal_rate": 0.1037,
                "goals": 0,
                "shots_on_target": 0.427,
                "total_shots": 1.2461,
                "rating": 6.7167,
                "minutes": 77.28,
                "total_pass": 18.9181,
                "accurate_pass": 15.0737,
                "duels_won": 3.4152,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.353,
                "total_own_half_passes": 6.092,
                "accurate_own_half_passes": 5.3454,
                "total_opp_half_passes": 12.8262,
                "accurate_opp_half_passes": 9.7284,
                "crosses_total": 1.9504,
                "crosses_accurate": 0.3833,
                "touches": 37.3087,
                "possession_lost": 14.1304,
                "dispossessed": 3.2155,
                "duels_lost": 8.3275,
                "aerial_won": 0.9,
                "aerial_lost": 0.7176,
                "interceptions": 0.5645,
                "tackles_won": 0.5766,
                "tackles": 0.8088,
                "clearances": 0.0432,
                "total_contest": 2.8892,
                "won_contest": 1.4223,
                "challenges_lost": 1.3189,
                "fouls": 1.809,
                "fouls_drawn": 1.0986,
                "blocks": 0.0,
                "big_chances_created": 0.4222,
                "big_chances_missed": 0.0,
                "xgot": 0.0918,
                "ball_carries": 13.3599,
                "total_progression": 83.4903,
                "progressive_carries": 2.3866,
                "shots_off_target": 0.8191,
                "duel_xg_multiplier": 0.9088,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.358,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0079,
                "creation_factor": 1.25,
                "fifa_overall": 86.0
              },
              "params": {
                "match_squad_rank": 13,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 198,
                "fifa_rank": 93.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.2035,
                "expected_assists": 0.152,
                "assist_rate": 0.3051,
                "assists": 0,
                "expected_goals": 0.1212,
                "goal_rate": 0.1037,
                "goals": 0,
                "shots_on_target": 0.427,
                "total_shots": 1.2461,
                "rating": 6.7167,
                "minutes": 77.28,
                "total_pass": 18.9181,
                "accurate_pass": 15.0737,
                "duels_won": 3.4152,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.353,
                "total_own_half_passes": 6.092,
                "accurate_own_half_passes": 5.3454,
                "total_opp_half_passes": 12.8262,
                "accurate_opp_half_passes": 9.7284,
                "crosses_total": 1.9504,
                "crosses_accurate": 0.3833,
                "touches": 37.3087,
                "possession_lost": 14.1304,
                "dispossessed": 3.2155,
                "duels_lost": 8.3275,
                "aerial_won": 0.9,
                "aerial_lost": 0.7176,
                "interceptions": 0.5645,
                "tackles_won": 0.5766,
                "tackles": 0.8088,
                "clearances": 0.0432,
                "total_contest": 2.8892,
                "won_contest": 1.4223,
                "challenges_lost": 1.3189,
                "fouls": 1.809,
                "fouls_drawn": 1.0986,
                "blocks": 0.0,
                "big_chances_created": 0.4222,
                "big_chances_missed": 0.0,
                "xgot": 0.0918,
                "ball_carries": 13.3599,
                "total_progression": 83.4903,
                "progressive_carries": 2.3866,
                "shots_off_target": 0.8191,
                "duel_xg_multiplier": 0.9088,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.358,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1141,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0079,
                "creation_factor": 1.25,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1141,
                "goal_rate": 0.1037,
                "scorer_weight": 0.1222,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0926,
                "finishing_factor": 1.0079,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.2035,
                "expected_assists": 0.152,
                "assist_rate": 0.3051,
                "assists": 1,
                "expected_goals": 0.1212,
                "goal_rate": 0.1037,
                "goals": 0,
                "shots_on_target": 0.427,
                "total_shots": 1.2461,
                "rating": 6.7167,
                "minutes": 77.28,
                "total_pass": 18.9181,
                "accurate_pass": 15.0737,
                "duels_won": 3.4152,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.353,
                "total_own_half_passes": 6.092,
                "accurate_own_half_passes": 5.3454,
                "total_opp_half_passes": 12.8262,
                "accurate_opp_half_passes": 9.7284,
                "crosses_total": 1.9504,
                "crosses_accurate": 0.3833,
                "touches": 37.3087,
                "possession_lost": 14.1304,
                "dispossessed": 3.2155,
                "duels_lost": 8.3275,
                "aerial_won": 0.9,
                "aerial_lost": 0.7176,
                "interceptions": 0.5645,
                "tackles_won": 0.5766,
                "tackles": 0.8088,
                "clearances": 0.0432,
                "total_contest": 2.8892,
                "won_contest": 1.4223,
                "challenges_lost": 1.3189,
                "fouls": 1.809,
                "fouls_drawn": 1.0986,
                "blocks": 0.0,
                "big_chances_created": 0.4222,
                "big_chances_missed": 0.0,
                "xgot": 0.0918,
                "ball_carries": 13.3599,
                "total_progression": 83.4903,
                "progressive_carries": 2.3866,
                "shots_off_target": 0.8191,
                "duel_xg_multiplier": 0.9088,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.358,
                "pressing_faced": "LOW",
                "matchup_zone": "CAM vs CM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1141,
                "projected_assists": 1,
                "assist_probability": 0.141,
                "finishing_factor": 1.0079,
                "creation_factor": 1.25,
                "fifa_overall": 86.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.141,
                "assist_rate": 0.3051,
                "provider_weight": 0.19,
                "squad_weight_total": 0.9085,
                "weight_share": 0.2091,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Álex Calatrava": {
          "player_id": 1136863,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 22,
          "height": 175,
          "market_value": 4900000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0972,
            "assist_rate": 0.086,
            "assists": 0,
            "expected_goals": 0.1275,
            "goal_rate": 0.1359,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7921,
            "minutes": 76,
            "total_pass": 24,
            "accurate_pass": 16,
            "duels_won": 6,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 11,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 38,
            "possession_lost": 12.5878,
            "dispossessed": 0.9121,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 2,
            "tackles": 3,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0756,
            "ball_carries": 12,
            "total_progression": 50,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.901,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.6,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.333,
            "pressing_faced": "LOW",
            "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Santi Comesaña",
            "opponent_faced": "Santi Comesaña",
            "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1197,
            "projected_assists": 0,
            "assist_probability": 0.0926,
            "finishing_factor": 1.1781,
            "creation_factor": 0.9827,
            "fifa_overall": 87.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 85,
                "rating": 7.1,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1189,
                "expected_assists": 0.1928,
                "total_shots": 3,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 28,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 0,
                "aerial_won": 1,
                "duels_won": 8,
                "ball_recovery": 3,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 17,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0364,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "key_pass": 3,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 17,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1425,
                "expected_assists": 0.0021,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 3,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 61,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0944,
                "expected_assists": 0.0996,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 23,
                "accurate_pass": 15,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 16,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 24,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 2,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 59,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1652,
                "expected_assists": 0.0327,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 14,
                "accurate_pass": 8,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0747,
                "expected_assists": 0.0638,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 31,
                "accurate_pass": 22,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 2,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 66,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3589,
                "expected_assists": 0.0187,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 15,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 72,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1716,
                "expected_assists": 0.0932,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 25,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 286,
            "combined_rank_score": 131.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 199.0,
            "sofascore_rating": 7.2,
            "sofascore_appearances": 1.0,
            "fifa_rank": 63.0,
            "fifa_overall": 87.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7921,
            "source_file": "data/player_rankings.csv",
            "player_name": "Álex Calatrava",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Islom Anvarov",
                  "ranking": 281
                },
                {
                  "player_name": "Jasurbek Ubaydullaev",
                  "ranking": 282
                },
                {
                  "player_name": "Dilan Varas",
                  "ranking": 283
                },
                {
                  "player_name": "Shon Goldberg",
                  "ranking": 284
                },
                {
                  "player_name": "Tomas Švedkauskas",
                  "ranking": 285
                }
              ],
              "lower": [
                {
                  "player_name": "Josue Caicedo",
                  "ranking": 287
                },
                {
                  "player_name": "Jamalidin Hodjaniyazov",
                  "ranking": 288
                },
                {
                  "player_name": "Marko Stanojević",
                  "ranking": 289
                },
                {
                  "player_name": "Mihail Stefan",
                  "ranking": 290
                },
                {
                  "player_name": "Nicolò Barella",
                  "ranking": 291
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.775,
          "history_matches": 10,
          "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": 10,
            "data_confidence": 0.775,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9956,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 226.0,
              "goals_per90": 0.4,
              "assists_per90": 0.0,
              "shots_per90": 2.39,
              "shots_on_target_pct": 66.7,
              "prior_reliability": 0.1667
            },
            "rationale": "XGBoost regressor (M_service) evaluated 10 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Espanyol, rel: 0.17, gls/90: 0.4, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.8426,
                "expected_assists": 0.0888,
                "assists": 0.0896,
                "assist_rate": 0.0896,
                "expected_goals": 0.1201,
                "goals": 0.1445,
                "goal_rate": 0.1445,
                "shots_on_target": 0.5078,
                "total_shots": 1.5281,
                "rating": 6.7921,
                "minutes": 75.89,
                "total_pass": 24.0351,
                "accurate_pass": 15.5924,
                "duels_won": 5.9187,
                "total_long_balls": 1.2387,
                "accurate_long_balls": 0.4455,
                "total_own_half_passes": 7.2206,
                "accurate_own_half_passes": 4.9436,
                "total_opp_half_passes": 16.8145,
                "accurate_opp_half_passes": 10.6488,
                "crosses_total": 0.604,
                "crosses_accurate": 0.0,
                "touches": 38.6676,
                "possession_lost": 12.6434,
                "dispossessed": 0.9161,
                "duels_lost": 5.3874,
                "aerial_won": 0.9765,
                "aerial_lost": 0.771,
                "interceptions": 0.3477,
                "tackles_won": 1.5145,
                "tackles": 2.9339,
                "clearances": 0.5284,
                "total_contest": 1.9822,
                "won_contest": 1.0669,
                "challenges_lost": 1.8193,
                "fouls": 1.1794,
                "fouls_drawn": 0.9414,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1948,
                "xgot": 0.0712,
                "ball_carries": 12.1325,
                "total_progression": 49.8503,
                "progressive_carries": 1.8433,
                "shots_off_target": 1.0202
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1868,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.1588,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.1349,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.1147,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0975,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.0829,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.0704,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0599,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.0509,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0433,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 10.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.4883,
                  "creative_index": 0.3877,
                  "expectedGoals": 0.0941,
                  "expectedAssists": 0.0649,
                  "totalOppositionHalfPasses": 10.1154
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8426030874252319,
                    "model_output": 0.8426,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1065
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0534
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0427
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0242
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0215
                        }
                      ],
                      "others": -0.0124,
                      "total": 0.8426,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.113026
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.055007
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.046284
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.027212
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.024886
                        }
                      ],
                      "others_margin": -0.014669
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.08875542879104614,
                    "model_output": 0.0888,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0114
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0073
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0047
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0041
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0034
                        }
                      ],
                      "others": -0.012,
                      "total": 0.0888,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.125776
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.073502
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.04391
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.038259
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.032696
                        }
                      ],
                      "others_margin": -0.128323
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.08961330354213715,
                    "model_output": 0.0896,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": 0.0058
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0057
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0048
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0044
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0044
                        }
                      ],
                      "others": -0.0109,
                      "total": 0.0896,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.065775
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.060426
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.051007
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.046847
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.044403
                        }
                      ],
                      "others_margin": -0.113859
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.12009762227535248,
                    "model_output": 0.1201,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0136
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0103
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0048
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": 0.0038
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0034
                        }
                      ],
                      "others": 0.0092,
                      "total": 0.1201,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.138552
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.093649
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.04208
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": 0.034009
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.029971
                        }
                      ],
                      "others_margin": 0.078569
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.14447933435440063,
                    "model_output": 0.1445,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.029
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0145
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0143
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0065
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0066
                        }
                      ],
                      "others": 0.0076,
                      "total": 0.1445,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.266324
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.124502
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122746
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.051025
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.049568
                        }
                      ],
                      "others_margin": 0.054251
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5078492760658264,
                    "model_output": 0.5078,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0831
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0566
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.02
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0194
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0141
                        }
                      ],
                      "others": 0.0633,
                      "total": 0.5078,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.232024
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.132011
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.042806
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.041323
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.031308
                        }
                      ],
                      "others_margin": 0.132992
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.5280637741088867,
                    "model_output": 1.5281,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.3422
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1508
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0521
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": 0.0443
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0286
                        }
                      ],
                      "others": 0.0302,
                      "total": 1.5281,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.342187
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.150759
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.052112
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": 0.04426
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.028564
                        }
                      ],
                      "others_margin": 0.030297
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.792129039764404,
                    "model_output": 6.7921,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0331
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.03
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0231
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0096
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": 0.0084
                        }
                      ],
                      "others": -0.0357,
                      "total": 6.7921,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.033084
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.030004
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.02312
                        },
                        {
                          "name": "rating",
                          "margin": -0.009647
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": 0.008377
                        }
                      ],
                      "others_margin": -0.035596
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 10,
                  "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.9956, quality 0.461)",
              "stats": {
                "key_pass": 0.8389,
                "expected_assists": 0.0884,
                "assists": 0.0892,
                "assist_rate": 0.0892,
                "expected_goals": 0.1196,
                "goals": 0.1438,
                "goal_rate": 0.1438,
                "shots_on_target": 0.5056,
                "total_shots": 1.5213,
                "rating": 6.7921,
                "minutes": 75.89,
                "total_pass": 23.9293,
                "accurate_pass": 15.5238,
                "duels_won": 5.8927,
                "total_long_balls": 1.2332,
                "accurate_long_balls": 0.4435,
                "total_own_half_passes": 7.1888,
                "accurate_own_half_passes": 4.9218,
                "total_opp_half_passes": 16.7405,
                "accurate_opp_half_passes": 10.6019,
                "crosses_total": 0.6013,
                "crosses_accurate": 0.0,
                "touches": 38.4975,
                "possession_lost": 12.5878,
                "dispossessed": 0.9121,
                "duels_lost": 5.3637,
                "aerial_won": 0.9722,
                "aerial_lost": 0.7676,
                "interceptions": 0.3462,
                "tackles_won": 1.5078,
                "tackles": 2.921,
                "clearances": 0.5261,
                "total_contest": 1.9735,
                "won_contest": 1.0622,
                "challenges_lost": 1.8113,
                "fouls": 1.1742,
                "fouls_drawn": 0.9373,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1939,
                "xgot": 0.0709,
                "ball_carries": 12.0791,
                "total_progression": 49.631,
                "progressive_carries": 1.8352,
                "shots_off_target": 1.0157
              },
              "params": {
                "market_value_eur": 4900000,
                "quality_factor": 0.4609,
                "boost_factor": 0.9956,
                "reference_quality": 0.505,
                "history_matches": 10,
                "history_shrink": 0.3333,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0361)",
              "stats": {
                "key_pass": 0.8389,
                "expected_assists": 0.0884,
                "assists": 0.086,
                "assist_rate": 0.086,
                "expected_goals": 0.1196,
                "goals": 0.1508,
                "goal_rate": 0.1508,
                "shots_on_target": 0.5358,
                "total_shots": 1.5391,
                "rating": 6.7921,
                "minutes": 75.89,
                "total_pass": 23.9293,
                "accurate_pass": 15.5238,
                "duels_won": 5.8927,
                "total_long_balls": 1.2332,
                "accurate_long_balls": 0.4435,
                "total_own_half_passes": 7.1888,
                "accurate_own_half_passes": 4.9218,
                "total_opp_half_passes": 16.7405,
                "accurate_opp_half_passes": 10.6019,
                "crosses_total": 0.6039,
                "crosses_accurate": 0.0,
                "touches": 38.4975,
                "possession_lost": 12.5878,
                "dispossessed": 0.9121,
                "duels_lost": 5.3637,
                "aerial_won": 0.9722,
                "aerial_lost": 0.7676,
                "interceptions": 0.3581,
                "tackles_won": 1.5143,
                "tackles": 2.921,
                "clearances": 0.5261,
                "total_contest": 1.9735,
                "won_contest": 1.0622,
                "challenges_lost": 1.8113,
                "fouls": 1.2049,
                "fouls_drawn": 0.9156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1939,
                "xgot": 0.0709,
                "ball_carries": 12.0791,
                "total_progression": 49.631,
                "progressive_carries": 1.8352,
                "shots_off_target": 1.0157
              },
              "params": {
                "blend_weight": 0.0361,
                "history_matches": 10,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8432,
                "prior_reliability": 0.1667,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.1742,
                  "after": 1.2049
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5056,
                  "after": 0.5358
                },
                {
                  "stat": "wasFouled",
                  "before": 0.9373,
                  "after": 0.9156
                },
                {
                  "stat": "totalShots",
                  "before": 1.5213,
                  "after": 1.5391
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.3462,
                  "after": 0.3581
                },
                {
                  "stat": "goals",
                  "before": 0.1438,
                  "after": 0.1508
                },
                {
                  "stat": "wonTackle",
                  "before": 1.5078,
                  "after": 1.5143
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.8389,
                "expected_assists": 0.0884,
                "assists": 0.086,
                "assist_rate": 0.086,
                "expected_goals": 0.1196,
                "goals": 0.1508,
                "goal_rate": 0.1508,
                "shots_on_target": 0.5358,
                "total_shots": 1.5515,
                "rating": 6.7921,
                "minutes": 75.89,
                "total_pass": 23.9293,
                "accurate_pass": 15.5238,
                "duels_won": 5.8927,
                "total_long_balls": 1.2332,
                "accurate_long_balls": 0.4435,
                "total_own_half_passes": 7.1888,
                "accurate_own_half_passes": 4.9218,
                "total_opp_half_passes": 16.7405,
                "accurate_opp_half_passes": 10.6019,
                "crosses_total": 0.6039,
                "crosses_accurate": 0.0,
                "touches": 38.4975,
                "possession_lost": 12.5878,
                "dispossessed": 0.9121,
                "duels_lost": 5.3637,
                "aerial_won": 0.9722,
                "aerial_lost": 0.7676,
                "interceptions": 0.3581,
                "tackles_won": 1.5143,
                "tackles": 2.921,
                "clearances": 0.5261,
                "total_contest": 1.9735,
                "won_contest": 1.0622,
                "challenges_lost": 1.8113,
                "fouls": 1.2049,
                "fouls_drawn": 0.9156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1939,
                "xgot": 0.0709,
                "ball_carries": 12.0791,
                "total_progression": 49.631,
                "progressive_carries": 1.8352,
                "shots_off_target": 1.0157
              },
              "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.8389,
                "expected_assists": 0.0884,
                "assists": 0.086,
                "assist_rate": 0.086,
                "expected_goals": 0.1078,
                "goals": 0.1359,
                "goal_rate": 0.1359,
                "shots_on_target": 0.4828,
                "total_shots": 1.3979,
                "rating": 6.7921,
                "minutes": 75.89,
                "total_pass": 23.9293,
                "accurate_pass": 15.5238,
                "duels_won": 5.8927,
                "total_long_balls": 1.2332,
                "accurate_long_balls": 0.4435,
                "total_own_half_passes": 7.1888,
                "accurate_own_half_passes": 4.9218,
                "total_opp_half_passes": 16.7405,
                "accurate_opp_half_passes": 10.6019,
                "crosses_total": 0.6039,
                "crosses_accurate": 0.0,
                "touches": 38.4975,
                "possession_lost": 12.5878,
                "dispossessed": 0.9121,
                "duels_lost": 5.3637,
                "aerial_won": 0.9,
                "aerial_lost": 0.7676,
                "interceptions": 0.3581,
                "tackles_won": 1.5143,
                "tackles": 2.921,
                "clearances": 0.5261,
                "total_contest": 1.9735,
                "won_contest": 1.0622,
                "challenges_lost": 1.8113,
                "fouls": 1.2049,
                "fouls_drawn": 0.9156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1747,
                "xgot": 0.0639,
                "ball_carries": 12.0791,
                "total_progression": 49.631,
                "progressive_carries": 1.8352,
                "shots_off_target": 0.9151,
                "duel_xg_multiplier": 0.901,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.333,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Santi Comesaña",
                  "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                  "duel_win_rate": 0.333,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.901,
                  "skill_edge": -0.0194,
                  "height_edge": -0.048,
                  "attacker_skill": 0.4716,
                  "defender_skill": 0.5146,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Santi Comesaña",
                      "market_value": 8400000,
                      "role": "CM",
                      "price_index": 0.9,
                      "adjusted_quality": 0.5146
                    }
                  ],
                  "xg_override": 0.1078
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.5515,
                  "after": 1.3979
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.0157,
                  "after": 0.9151
                },
                {
                  "stat": "aerialWon",
                  "before": 0.9722,
                  "after": 0.9
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5358,
                  "after": 0.4828
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1939,
                  "after": 0.1747
                },
                {
                  "stat": "goals",
                  "before": 0.1508,
                  "after": 0.1359
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1196,
                  "after": 0.1078
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0709,
                  "after": 0.0639
                }
              ]
            },
            {
              "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.8389,
                "expected_assists": 0.0884,
                "assist_rate": 0.086,
                "assists": 0,
                "expected_goals": 0.1078,
                "goal_rate": 0.1359,
                "goals": 0,
                "shots_on_target": 0.4828,
                "total_shots": 1.3979,
                "rating": 6.7921,
                "minutes": 75.89,
                "total_pass": 23.9293,
                "accurate_pass": 15.5238,
                "duels_won": 5.8927,
                "total_long_balls": 1.2332,
                "accurate_long_balls": 0.4435,
                "total_own_half_passes": 7.1888,
                "accurate_own_half_passes": 4.9218,
                "total_opp_half_passes": 16.7405,
                "accurate_opp_half_passes": 10.6019,
                "crosses_total": 0.6039,
                "crosses_accurate": 0.0,
                "touches": 38.4975,
                "possession_lost": 12.5878,
                "dispossessed": 0.9121,
                "duels_lost": 5.3637,
                "aerial_won": 0.9,
                "aerial_lost": 0.7676,
                "interceptions": 0.3581,
                "tackles_won": 1.5143,
                "tackles": 2.921,
                "clearances": 0.5261,
                "total_contest": 1.9735,
                "won_contest": 1.0622,
                "challenges_lost": 1.8113,
                "fouls": 1.2049,
                "fouls_drawn": 0.9156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1747,
                "xgot": 0.0639,
                "ball_carries": 12.0791,
                "total_progression": 49.631,
                "progressive_carries": 1.8352,
                "shots_off_target": 0.9151,
                "duel_xg_multiplier": 0.901,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.333,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "key_pass": 0.8389,
                "expected_assists": 0.0972,
                "assist_rate": 0.086,
                "assists": 0,
                "expected_goals": 0.1275,
                "goal_rate": 0.1359,
                "goals": 0,
                "shots_on_target": 0.4828,
                "total_shots": 1.3979,
                "rating": 6.7921,
                "minutes": 75.89,
                "total_pass": 23.9293,
                "accurate_pass": 15.5238,
                "duels_won": 5.8927,
                "total_long_balls": 1.2332,
                "accurate_long_balls": 0.4435,
                "total_own_half_passes": 7.1888,
                "accurate_own_half_passes": 4.9218,
                "total_opp_half_passes": 16.7405,
                "accurate_opp_half_passes": 10.6019,
                "crosses_total": 0.6039,
                "crosses_accurate": 0.0,
                "touches": 38.4975,
                "possession_lost": 12.5878,
                "dispossessed": 0.9121,
                "duels_lost": 5.3637,
                "aerial_won": 0.9,
                "aerial_lost": 0.7676,
                "interceptions": 0.3581,
                "tackles_won": 1.5143,
                "tackles": 2.921,
                "clearances": 0.5261,
                "total_contest": 1.9735,
                "won_contest": 1.0622,
                "challenges_lost": 1.8113,
                "fouls": 1.2049,
                "fouls_drawn": 0.9156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1747,
                "xgot": 0.0756,
                "ball_carries": 12.0791,
                "total_progression": 49.631,
                "progressive_carries": 1.8352,
                "shots_off_target": 0.9151,
                "duel_xg_multiplier": 0.901,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.333,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "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.1781,
                "creation_factor": 0.9827
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1078,
                  "after": 0.1275
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0884,
                  "after": 0.0972
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 87.0)",
              "stats": {
                "key_pass": 0.8389,
                "expected_assists": 0.0972,
                "assist_rate": 0.086,
                "assists": 0,
                "expected_goals": 0.1275,
                "goal_rate": 0.1359,
                "goals": 0,
                "shots_on_target": 0.4828,
                "total_shots": 1.3979,
                "rating": 6.7921,
                "minutes": 75.89,
                "total_pass": 23.9293,
                "accurate_pass": 15.5238,
                "duels_won": 5.8927,
                "total_long_balls": 1.2332,
                "accurate_long_balls": 0.4435,
                "total_own_half_passes": 7.1888,
                "accurate_own_half_passes": 4.9218,
                "total_opp_half_passes": 16.7405,
                "accurate_opp_half_passes": 10.6019,
                "crosses_total": 0.6039,
                "crosses_accurate": 0.0,
                "touches": 38.4975,
                "possession_lost": 12.5878,
                "dispossessed": 0.9121,
                "duels_lost": 5.3637,
                "aerial_won": 0.9,
                "aerial_lost": 0.7676,
                "interceptions": 0.3581,
                "tackles_won": 1.5143,
                "tackles": 2.921,
                "clearances": 0.5261,
                "total_contest": 1.9735,
                "won_contest": 1.0622,
                "challenges_lost": 1.8113,
                "fouls": 1.2049,
                "fouls_drawn": 0.9156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1747,
                "xgot": 0.0756,
                "ball_carries": 12.0791,
                "total_progression": 49.631,
                "progressive_carries": 1.8352,
                "shots_off_target": 0.9151,
                "duel_xg_multiplier": 0.901,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.333,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "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.1781,
                "creation_factor": 0.9827,
                "fifa_overall": 87.0
              },
              "params": {
                "match_squad_rank": 7,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 286,
                "fifa_rank": 63.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": {
                "key_pass": 0.8389,
                "expected_assists": 0.0972,
                "assist_rate": 0.086,
                "assists": 0,
                "expected_goals": 0.1275,
                "goal_rate": 0.1359,
                "goals": 0,
                "shots_on_target": 0.4828,
                "total_shots": 1.3979,
                "rating": 6.7921,
                "minutes": 75.89,
                "total_pass": 23.9293,
                "accurate_pass": 15.5238,
                "duels_won": 5.8927,
                "total_long_balls": 1.2332,
                "accurate_long_balls": 0.4435,
                "total_own_half_passes": 7.1888,
                "accurate_own_half_passes": 4.9218,
                "total_opp_half_passes": 16.7405,
                "accurate_opp_half_passes": 10.6019,
                "crosses_total": 0.6039,
                "crosses_accurate": 0.0,
                "touches": 38.4975,
                "possession_lost": 12.5878,
                "dispossessed": 0.9121,
                "duels_lost": 5.3637,
                "aerial_won": 0.9,
                "aerial_lost": 0.7676,
                "interceptions": 0.3581,
                "tackles_won": 1.5143,
                "tackles": 2.921,
                "clearances": 0.5261,
                "total_contest": 1.9735,
                "won_contest": 1.0622,
                "challenges_lost": 1.8113,
                "fouls": 1.2049,
                "fouls_drawn": 0.9156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1747,
                "xgot": 0.0756,
                "ball_carries": 12.0791,
                "total_progression": 49.631,
                "progressive_carries": 1.8352,
                "shots_off_target": 0.9151,
                "duel_xg_multiplier": 0.901,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.333,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1197,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1781,
                "creation_factor": 0.9827,
                "fifa_overall": 87.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1197,
                "goal_rate": 0.1359,
                "scorer_weight": 0.1502,
                "squad_weight_total": 1.3186,
                "weight_share": 0.1139,
                "finishing_factor": 1.1781,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.8389,
                "expected_assists": 0.0972,
                "assist_rate": 0.086,
                "assists": 0,
                "expected_goals": 0.1275,
                "goal_rate": 0.1359,
                "goals": 0,
                "shots_on_target": 0.4828,
                "total_shots": 1.3979,
                "rating": 6.7921,
                "minutes": 75.89,
                "total_pass": 23.9293,
                "accurate_pass": 15.5238,
                "duels_won": 5.8927,
                "total_long_balls": 1.2332,
                "accurate_long_balls": 0.4435,
                "total_own_half_passes": 7.1888,
                "accurate_own_half_passes": 4.9218,
                "total_opp_half_passes": 16.7405,
                "accurate_opp_half_passes": 10.6019,
                "crosses_total": 0.6039,
                "crosses_accurate": 0.0,
                "touches": 38.4975,
                "possession_lost": 12.5878,
                "dispossessed": 0.9121,
                "duels_lost": 5.3637,
                "aerial_won": 0.9,
                "aerial_lost": 0.7676,
                "interceptions": 0.3581,
                "tackles_won": 1.5143,
                "tackles": 2.921,
                "clearances": 0.5261,
                "total_contest": 1.9735,
                "won_contest": 1.0622,
                "challenges_lost": 1.8113,
                "fouls": 1.2049,
                "fouls_drawn": 0.9156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1747,
                "xgot": 0.0756,
                "ball_carries": 12.0791,
                "total_progression": 49.631,
                "progressive_carries": 1.8352,
                "shots_off_target": 0.9151,
                "duel_xg_multiplier": 0.901,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.333,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1197,
                "projected_assists": 0,
                "assist_probability": 0.0926,
                "finishing_factor": 1.1781,
                "creation_factor": 0.9827,
                "fifa_overall": 87.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0926,
                "assist_rate": 0.086,
                "provider_weight": 0.0955,
                "squad_weight_total": 0.9085,
                "weight_share": 0.1051,
                "creation_factor": 0.9827,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Gabriel Moscardo": {
          "player_id": 1485309,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 20,
          "height": 185,
          "market_value": 7500000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0284,
            "assist_rate": 0.0401,
            "assists": 0,
            "expected_goals": 0.092,
            "goal_rate": 0.0853,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6782,
            "minutes": 69,
            "total_pass": 11,
            "accurate_pass": 9,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 4.1801,
            "dispossessed": 1.1522,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0064,
            "ball_carries": 4,
            "total_progression": 8,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9842,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.389,
            "pressing_faced": "LOW",
            "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Santi Comesaña",
            "opponent_faced": "Santi Comesaña",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0879,
            "projected_assists": 0,
            "assist_probability": 0.028,
            "finishing_factor": 1.0587,
            "creation_factor": 1.1887,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 17,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0586,
                "expected_assists": 0.0009,
                "total_shots": 1,
                "total_pass": 5,
                "accurate_pass": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 45,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0811,
                "expected_assists": 0.004,
                "total_shots": 1,
                "total_pass": 8,
                "accurate_pass": 5,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 24,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 59,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0136,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 17,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 5,
                "duels_won": 9
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0453,
                "expected_assists": 0.006,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 18,
                "tackles": 4,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4340,
            "combined_rank_score": 2356.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 4267.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6782,
            "source_file": "data/player_rankings.csv",
            "player_name": "Gabriel Moscardo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Fabiano Parisi",
                  "ranking": 4335
                },
                {
                  "player_name": "Mandela Keita",
                  "ranking": 4336
                },
                {
                  "player_name": "Jay Idzes",
                  "ranking": 4337
                },
                {
                  "player_name": "Obed Vargas",
                  "ranking": 4338
                },
                {
                  "player_name": "Mateo Joseph",
                  "ranking": 4339
                }
              ],
              "lower": [
                {
                  "player_name": "Akor Jerome Adams",
                  "ranking": 4341
                },
                {
                  "player_name": "Ezequiel Ponce",
                  "ranking": 4342
                },
                {
                  "player_name": "Anass Salah-Eddine",
                  "ranking": 4343
                },
                {
                  "player_name": "Fabio Miretti",
                  "ranking": 4344
                },
                {
                  "player_name": "Tommaso Baldanzi",
                  "ranking": 4345
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.567,
          "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.567,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9981,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "minutes": 45.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 2.0,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.0333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 5 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Espanyol, 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.5058,
                "expected_assists": 0.0259,
                "assists": 0.0405,
                "assist_rate": 0.0405,
                "expected_goals": 0.0791,
                "goals": 0.0878,
                "goal_rate": 0.0878,
                "shots_on_target": 0.2886,
                "total_shots": 0.9192,
                "rating": 6.6782,
                "minutes": 68.72,
                "total_pass": 10.784,
                "accurate_pass": 9.0118,
                "duels_won": 3.0078,
                "total_long_balls": 1.1656,
                "accurate_long_balls": 1.0248,
                "total_own_half_passes": 6.0043,
                "accurate_own_half_passes": 5.328,
                "total_opp_half_passes": 4.7797,
                "accurate_opp_half_passes": 3.6838,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.8184,
                "possession_lost": 4.1881,
                "dispossessed": 1.1544,
                "duels_lost": 2.7919,
                "aerial_won": 1.1979,
                "aerial_lost": 0.4719,
                "interceptions": 0.1656,
                "tackles_won": 0.5012,
                "tackles": 1.4494,
                "clearances": 1.0367,
                "total_contest": 0.3356,
                "won_contest": 0.1948,
                "challenges_lost": 0.4352,
                "fouls": 0.5896,
                "fouls_drawn": 0.1656,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0055,
                "ball_carries": 3.9101,
                "total_progression": 7.7096,
                "progressive_carries": 0.2696,
                "shots_off_target": 0.6306
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.2696,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1948,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.6396,
                  "creative_index": 0.0027,
                  "expectedGoals": 0.0408,
                  "expectedAssists": 0.0045,
                  "totalOppositionHalfPasses": 4.7797
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5058499574661255,
                    "model_output": 0.5058,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1201
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.103
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0999
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0845
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0252
                        }
                      ],
                      "others": -0.1515,
                      "total": 0.5059,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.144861
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.143514
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.139471
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.11671
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.037557
                        }
                      ],
                      "others_margin": -0.262116
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.025876319035887718,
                    "model_output": 0.0259,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0221
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.016
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0059
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.0181,
                      "total": 0.0259,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.301782
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.293564
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.153526
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.114852
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.102598
                        }
                      ],
                      "others_margin": -0.529377
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04053155705332756,
                    "model_output": 0.0405,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.016
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0108
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0052
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0035
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0034
                        }
                      ],
                      "others": -0.0124,
                      "total": 0.0405,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.208885
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.169388
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.092625
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.068917
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.067189
                        }
                      ],
                      "others_margin": -0.268211
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07912222295999527,
                    "model_output": 0.0791,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0129
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0114
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0071
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0059
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0054
                        }
                      ],
                      "others": -0.0042,
                      "total": 0.0791,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.151832
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.135054
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.081827
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.069022
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.062557
                        }
                      ],
                      "others_margin": -0.052443
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08775607496500015,
                    "model_output": 0.0878,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0119
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0114
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0099
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0074
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0046
                        }
                      ],
                      "others": -0.0138,
                      "total": 0.0878,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.134221
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128298
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.099302
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.073234
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": 0.04598
                        }
                      ],
                      "others_margin": -0.145289
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2885878086090088,
                    "model_output": 0.2886,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0604
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0439
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0308
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0213
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0136
                        }
                      ],
                      "others": 0.0361,
                      "total": 0.2886,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.210439
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.186497
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.13446
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.083391
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.052473
                        }
                      ],
                      "others_margin": 0.133575
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9191602468490601,
                    "model_output": 0.9192,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1678
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.135
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0693
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0413
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0308
                        }
                      ],
                      "others": -0.0349,
                      "total": 0.9192,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.167817
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.134959
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.069349
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.041262
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.03082
                        }
                      ],
                      "others_margin": -0.034825
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6781744956970215,
                    "model_output": 6.6782,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0575
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0365
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0219
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0202
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0186
                        }
                      ],
                      "others": -0.0661,
                      "total": 6.6782,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.05751
                        },
                        {
                          "name": "rating",
                          "margin": -0.036466
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.021892
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.020204
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.018632
                        }
                      ],
                      "others_margin": -0.066101
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 5,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9981, quality 0.493)",
              "stats": {
                "key_pass": 0.5049,
                "expected_assists": 0.0258,
                "assists": 0.0405,
                "assist_rate": 0.0405,
                "expected_goals": 0.079,
                "goals": 0.0876,
                "goal_rate": 0.0876,
                "shots_on_target": 0.288,
                "total_shots": 0.9174,
                "rating": 6.6782,
                "minutes": 68.72,
                "total_pass": 10.7635,
                "accurate_pass": 8.9947,
                "duels_won": 3.0021,
                "total_long_balls": 1.1634,
                "accurate_long_balls": 1.0229,
                "total_own_half_passes": 5.9929,
                "accurate_own_half_passes": 5.3179,
                "total_opp_half_passes": 4.7706,
                "accurate_opp_half_passes": 3.6768,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.7826,
                "possession_lost": 4.1801,
                "dispossessed": 1.1522,
                "duels_lost": 2.7866,
                "aerial_won": 1.1956,
                "aerial_lost": 0.471,
                "interceptions": 0.1653,
                "tackles_won": 0.5002,
                "tackles": 1.4466,
                "clearances": 1.0347,
                "total_contest": 0.335,
                "won_contest": 0.1944,
                "challenges_lost": 0.4344,
                "fouls": 0.5885,
                "fouls_drawn": 0.1653,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0055,
                "ball_carries": 3.9027,
                "total_progression": 7.695,
                "progressive_carries": 0.2691,
                "shots_off_target": 0.6294
              },
              "params": {
                "market_value_eur": 7500000,
                "quality_factor": 0.4927,
                "boost_factor": 0.9981,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0108)",
              "stats": {
                "key_pass": 0.5049,
                "expected_assists": 0.0258,
                "assists": 0.0401,
                "assist_rate": 0.0401,
                "expected_goals": 0.079,
                "goals": 0.0867,
                "goal_rate": 0.0867,
                "shots_on_target": 0.3014,
                "total_shots": 0.924,
                "rating": 6.6782,
                "minutes": 68.72,
                "total_pass": 10.7635,
                "accurate_pass": 8.9947,
                "duels_won": 3.0021,
                "total_long_balls": 1.1634,
                "accurate_long_balls": 1.0229,
                "total_own_half_passes": 5.9929,
                "accurate_own_half_passes": 5.3179,
                "total_opp_half_passes": 4.7706,
                "accurate_opp_half_passes": 3.6768,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.7826,
                "possession_lost": 4.1801,
                "dispossessed": 1.1522,
                "duels_lost": 2.7866,
                "aerial_won": 1.1956,
                "aerial_lost": 0.471,
                "interceptions": 0.1635,
                "tackles_won": 0.5113,
                "tackles": 1.4466,
                "clearances": 1.0347,
                "total_contest": 0.335,
                "won_contest": 0.1944,
                "challenges_lost": 0.4344,
                "fouls": 0.5821,
                "fouls_drawn": 0.1635,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0055,
                "ball_carries": 3.9027,
                "total_progression": 7.695,
                "progressive_carries": 0.2691,
                "shots_off_target": 0.6294
              },
              "params": {
                "blend_weight": 0.0108,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.7636,
                "prior_reliability": 0.0333,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.288,
                  "after": 0.3014
                },
                {
                  "stat": "wonTackle",
                  "before": 0.5002,
                  "after": 0.5113
                },
                {
                  "stat": "totalShots",
                  "before": 0.9174,
                  "after": 0.924
                },
                {
                  "stat": "fouls",
                  "before": 0.5885,
                  "after": 0.5821
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5049,
                "expected_assists": 0.0258,
                "assists": 0.0401,
                "assist_rate": 0.0401,
                "expected_goals": 0.079,
                "goals": 0.0867,
                "goal_rate": 0.0867,
                "shots_on_target": 0.3014,
                "total_shots": 0.9308,
                "rating": 6.6782,
                "minutes": 68.72,
                "total_pass": 10.7635,
                "accurate_pass": 8.9947,
                "duels_won": 3.0021,
                "total_long_balls": 1.1634,
                "accurate_long_balls": 1.0229,
                "total_own_half_passes": 5.9929,
                "accurate_own_half_passes": 5.3179,
                "total_opp_half_passes": 4.7706,
                "accurate_opp_half_passes": 3.6768,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.7826,
                "possession_lost": 4.1801,
                "dispossessed": 1.1522,
                "duels_lost": 2.7866,
                "aerial_won": 1.1956,
                "aerial_lost": 0.471,
                "interceptions": 0.1635,
                "tackles_won": 0.5113,
                "tackles": 1.4466,
                "clearances": 1.0347,
                "total_contest": 0.335,
                "won_contest": 0.1944,
                "challenges_lost": 0.4344,
                "fouls": 0.5821,
                "fouls_drawn": 0.1635,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0055,
                "ball_carries": 3.9027,
                "total_progression": 7.695,
                "progressive_carries": 0.2691,
                "shots_off_target": 0.6294
              },
              "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.5049,
                "expected_assists": 0.0258,
                "assists": 0.0401,
                "assist_rate": 0.0401,
                "expected_goals": 0.0778,
                "goals": 0.0853,
                "goal_rate": 0.0853,
                "shots_on_target": 0.2966,
                "total_shots": 0.9161,
                "rating": 6.6782,
                "minutes": 68.72,
                "total_pass": 10.7635,
                "accurate_pass": 8.9947,
                "duels_won": 3.0021,
                "total_long_balls": 1.1634,
                "accurate_long_balls": 1.0229,
                "total_own_half_passes": 5.9929,
                "accurate_own_half_passes": 5.3179,
                "total_opp_half_passes": 4.7706,
                "accurate_opp_half_passes": 3.6768,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.7826,
                "possession_lost": 4.1801,
                "dispossessed": 1.1522,
                "duels_lost": 2.7866,
                "aerial_won": 1.2,
                "aerial_lost": 0.471,
                "interceptions": 0.1635,
                "tackles_won": 0.5113,
                "tackles": 1.4466,
                "clearances": 1.0347,
                "total_contest": 0.335,
                "won_contest": 0.1944,
                "challenges_lost": 0.4344,
                "fouls": 0.5821,
                "fouls_drawn": 0.1635,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0054,
                "ball_carries": 3.9027,
                "total_progression": 7.695,
                "progressive_carries": 0.2691,
                "shots_off_target": 0.6195,
                "duel_xg_multiplier": 0.9842,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.389,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Santi Comesaña",
                  "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                  "duel_win_rate": 0.389,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9842,
                  "skill_edge": -0.0027,
                  "height_edge": -0.008,
                  "attacker_skill": 0.5085,
                  "defender_skill": 0.5146,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Santi Comesaña",
                      "market_value": 8400000,
                      "role": "CM",
                      "price_index": 0.9,
                      "adjusted_quality": 0.5146
                    }
                  ],
                  "xg_override": 0.0778
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.9308,
                  "after": 0.9161
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.6294,
                  "after": 0.6195
                }
              ]
            },
            {
              "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.5049,
                "expected_assists": 0.0258,
                "assist_rate": 0.0401,
                "assists": 0,
                "expected_goals": 0.0778,
                "goal_rate": 0.0853,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.9161,
                "rating": 6.6782,
                "minutes": 68.72,
                "total_pass": 10.7635,
                "accurate_pass": 8.9947,
                "duels_won": 3.0021,
                "total_long_balls": 1.1634,
                "accurate_long_balls": 1.0229,
                "total_own_half_passes": 5.9929,
                "accurate_own_half_passes": 5.3179,
                "total_opp_half_passes": 4.7706,
                "accurate_opp_half_passes": 3.6768,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.7826,
                "possession_lost": 4.1801,
                "dispossessed": 1.1522,
                "duels_lost": 2.7866,
                "aerial_won": 1.2,
                "aerial_lost": 0.471,
                "interceptions": 0.1635,
                "tackles_won": 0.5113,
                "tackles": 1.4466,
                "clearances": 1.0347,
                "total_contest": 0.335,
                "won_contest": 0.1944,
                "challenges_lost": 0.4344,
                "fouls": 0.5821,
                "fouls_drawn": 0.1635,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0054,
                "ball_carries": 3.9027,
                "total_progression": 7.695,
                "progressive_carries": 0.2691,
                "shots_off_target": 0.6195,
                "duel_xg_multiplier": 0.9842,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.389,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "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.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "key_pass": 0.5049,
                "expected_assists": 0.0284,
                "assist_rate": 0.0401,
                "assists": 0,
                "expected_goals": 0.092,
                "goal_rate": 0.0853,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.9161,
                "rating": 6.6782,
                "minutes": 68.72,
                "total_pass": 10.7635,
                "accurate_pass": 8.9947,
                "duels_won": 3.0021,
                "total_long_balls": 1.1634,
                "accurate_long_balls": 1.0229,
                "total_own_half_passes": 5.9929,
                "accurate_own_half_passes": 5.3179,
                "total_opp_half_passes": 4.7706,
                "accurate_opp_half_passes": 3.6768,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.7826,
                "possession_lost": 4.1801,
                "dispossessed": 1.1522,
                "duels_lost": 2.7866,
                "aerial_won": 1.2,
                "aerial_lost": 0.471,
                "interceptions": 0.1635,
                "tackles_won": 0.5113,
                "tackles": 1.4466,
                "clearances": 1.0347,
                "total_contest": 0.335,
                "won_contest": 0.1944,
                "challenges_lost": 0.4344,
                "fouls": 0.5821,
                "fouls_drawn": 0.1635,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0064,
                "ball_carries": 3.9027,
                "total_progression": 7.695,
                "progressive_carries": 0.2691,
                "shots_off_target": 0.6195,
                "duel_xg_multiplier": 0.9842,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.389,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "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.1887
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0778,
                  "after": 0.092
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 72.0)",
              "stats": {
                "key_pass": 0.5049,
                "expected_assists": 0.0284,
                "assist_rate": 0.0401,
                "assists": 0,
                "expected_goals": 0.092,
                "goal_rate": 0.0853,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.9161,
                "rating": 6.6782,
                "minutes": 68.72,
                "total_pass": 10.7635,
                "accurate_pass": 8.9947,
                "duels_won": 3.0021,
                "total_long_balls": 1.1634,
                "accurate_long_balls": 1.0229,
                "total_own_half_passes": 5.9929,
                "accurate_own_half_passes": 5.3179,
                "total_opp_half_passes": 4.7706,
                "accurate_opp_half_passes": 3.6768,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.7826,
                "possession_lost": 4.1801,
                "dispossessed": 1.1522,
                "duels_lost": 2.7866,
                "aerial_won": 1.2,
                "aerial_lost": 0.471,
                "interceptions": 0.1635,
                "tackles_won": 0.5113,
                "tackles": 1.4466,
                "clearances": 1.0347,
                "total_contest": 0.335,
                "won_contest": 0.1944,
                "challenges_lost": 0.4344,
                "fouls": 0.5821,
                "fouls_drawn": 0.1635,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0064,
                "ball_carries": 3.9027,
                "total_progression": 7.695,
                "progressive_carries": 0.2691,
                "shots_off_target": 0.6195,
                "duel_xg_multiplier": 0.9842,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.389,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "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.1887,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4340,
                "fifa_rank": 4267.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.5049,
                "expected_assists": 0.0284,
                "assist_rate": 0.0401,
                "assists": 0,
                "expected_goals": 0.092,
                "goal_rate": 0.0853,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.9161,
                "rating": 6.6782,
                "minutes": 68.72,
                "total_pass": 10.7635,
                "accurate_pass": 8.9947,
                "duels_won": 3.0021,
                "total_long_balls": 1.1634,
                "accurate_long_balls": 1.0229,
                "total_own_half_passes": 5.9929,
                "accurate_own_half_passes": 5.3179,
                "total_opp_half_passes": 4.7706,
                "accurate_opp_half_passes": 3.6768,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.7826,
                "possession_lost": 4.1801,
                "dispossessed": 1.1522,
                "duels_lost": 2.7866,
                "aerial_won": 1.2,
                "aerial_lost": 0.471,
                "interceptions": 0.1635,
                "tackles_won": 0.5113,
                "tackles": 1.4466,
                "clearances": 1.0347,
                "total_contest": 0.335,
                "won_contest": 0.1944,
                "challenges_lost": 0.4344,
                "fouls": 0.5821,
                "fouls_drawn": 0.1635,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0064,
                "ball_carries": 3.9027,
                "total_progression": 7.695,
                "progressive_carries": 0.2691,
                "shots_off_target": 0.6195,
                "duel_xg_multiplier": 0.9842,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.389,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0879,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0587,
                "creation_factor": 1.1887,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0879,
                "goal_rate": 0.0853,
                "scorer_weight": 0.0974,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0739,
                "finishing_factor": 1.0587,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.5049,
                "expected_assists": 0.0284,
                "assist_rate": 0.0401,
                "assists": 0,
                "expected_goals": 0.092,
                "goal_rate": 0.0853,
                "goals": 0,
                "shots_on_target": 0.2966,
                "total_shots": 0.9161,
                "rating": 6.6782,
                "minutes": 68.72,
                "total_pass": 10.7635,
                "accurate_pass": 8.9947,
                "duels_won": 3.0021,
                "total_long_balls": 1.1634,
                "accurate_long_balls": 1.0229,
                "total_own_half_passes": 5.9929,
                "accurate_own_half_passes": 5.3179,
                "total_opp_half_passes": 4.7706,
                "accurate_opp_half_passes": 3.6768,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.7826,
                "possession_lost": 4.1801,
                "dispossessed": 1.1522,
                "duels_lost": 2.7866,
                "aerial_won": 1.2,
                "aerial_lost": 0.471,
                "interceptions": 0.1635,
                "tackles_won": 0.5113,
                "tackles": 1.4466,
                "clearances": 1.0347,
                "total_contest": 0.335,
                "won_contest": 0.1944,
                "challenges_lost": 0.4344,
                "fouls": 0.5821,
                "fouls_drawn": 0.1635,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0064,
                "ball_carries": 3.9027,
                "total_progression": 7.695,
                "progressive_carries": 0.2691,
                "shots_off_target": 0.6195,
                "duel_xg_multiplier": 0.9842,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.389,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Santi Comesaña",
                "opponent_faced": "Santi Comesaña",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0879,
                "projected_assists": 0,
                "assist_probability": 0.028,
                "finishing_factor": 1.0587,
                "creation_factor": 1.1887,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.028,
                "assist_rate": 0.0401,
                "provider_weight": 0.0338,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0372,
                "creation_factor": 1.1887,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Edu Expósito": {
          "player_id": 877262,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 175,
          "market_value": 4500000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.1652,
            "assist_rate": 0.0977,
            "assists": 0,
            "expected_goals": 0.1116,
            "goal_rate": 0.122,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 7.1104,
            "minutes": 83,
            "total_pass": 40,
            "accurate_pass": 33,
            "duels_won": 5,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 14,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 26,
            "accurate_opp_half_passes": 20,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 57,
            "possession_lost": 12.416,
            "dispossessed": 0.7822,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 2,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0906,
            "ball_carries": 13,
            "total_progression": 56,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.868,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.0,
            "crosses_attempted": 1.9,
            "duel_win_rate": 0.39,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Juan Foyth",
            "opponent_faced": "Juan Foyth",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1056,
            "projected_assists": 0,
            "assist_probability": 0.1523,
            "finishing_factor": 1.1911,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 8.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1176,
                "expected_assists": 0.1994,
                "total_shots": 1,
                "shots_on_target": 1,
                "shots_off_target": 0,
                "total_pass": 48,
                "accurate_pass": 39,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 0,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 0,
                "duels_won": 4,
                "ball_recovery": 8,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 73,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1762,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 16,
                "key_pass": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 82,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0597,
                "expected_assists": 0.0303,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 28,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 3,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1449,
                "expected_assists": 0.3741,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 81,
                "accurate_pass": 72,
                "key_pass": 6,
                "tackles": 4,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3802,
                "expected_assists": 0.2161,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 30,
                "accurate_pass": 26,
                "key_pass": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 89,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0458,
                "expected_assists": 0.1488,
                "total_shots": 1,
                "total_pass": 35,
                "accurate_pass": 32,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.141,
                "expected_assists": 0.6104,
                "total_shots": 1,
                "total_pass": 49,
                "accurate_pass": 39,
                "key_pass": 6,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 70,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1531,
                "expected_assists": 0.036,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 39,
                "accurate_pass": 32,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 88,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0563,
                "expected_assists": 0.0376,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 47,
                "accurate_pass": 40,
                "tackles": 4,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 86,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1101,
                "expected_assists": 0.0395,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 51,
                "accurate_pass": 47,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2628,
            "combined_rank_score": 921.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 289.0,
            "sofascore_rating": 7.0556,
            "sofascore_appearances": 36.0,
            "fifa_rank": 1553.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.1104,
            "source_file": "data/player_rankings.csv",
            "player_name": "Edu Expósito",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Francisco Jose Pozzo",
                  "ranking": 2623
                },
                {
                  "player_name": "Augustine Chidi Kwem",
                  "ranking": 2624
                },
                {
                  "player_name": "Otabek Ahadov",
                  "ranking": 2625
                },
                {
                  "player_name": "Rodrigo Sandoval",
                  "ranking": 2626
                },
                {
                  "player_name": "Ruben Loftus-Cheek",
                  "ranking": 2627
                }
              ],
              "lower": [
                {
                  "player_name": "Lucas Boyé",
                  "ranking": 2629
                },
                {
                  "player_name": "Duván Zapata",
                  "ranking": 2630
                },
                {
                  "player_name": "Tosin Adarabioyo",
                  "ranking": 2631
                },
                {
                  "player_name": "Selton Sanchez",
                  "ranking": 2632
                },
                {
                  "player_name": "Jung-Min Kim",
                  "ranking": 2633
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.777,
          "history_matches": 46,
          "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": 46,
            "data_confidence": 0.777,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9986,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 241.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 3.36,
              "shots_on_target_pct": 11.1,
              "prior_reliability": 0.18
            },
            "rationale": "XGBoost regressor (M_service) evaluated 46 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Espanyol, rel: 0.18, 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.6209,
                "expected_assists": 0.1506,
                "assists": 0.099,
                "assist_rate": 0.099,
                "expected_goals": 0.109,
                "goals": 0.1424,
                "goal_rate": 0.1424,
                "shots_on_target": 0.4093,
                "total_shots": 1.3302,
                "rating": 7.1104,
                "minutes": 82.87,
                "total_pass": 39.9293,
                "accurate_pass": 33.2867,
                "duels_won": 4.5597,
                "total_long_balls": 4.0323,
                "accurate_long_balls": 1.7266,
                "total_own_half_passes": 14.3572,
                "accurate_own_half_passes": 13.2397,
                "total_opp_half_passes": 25.5721,
                "accurate_opp_half_passes": 20.047,
                "crosses_total": 4.1326,
                "crosses_accurate": 1.2265,
                "touches": 57.4807,
                "possession_lost": 12.4334,
                "dispossessed": 0.7833,
                "duels_lost": 4.5625,
                "aerial_won": 0.7703,
                "aerial_lost": 1.2637,
                "interceptions": 0.752,
                "tackles_won": 1.1657,
                "tackles": 1.8751,
                "clearances": 1.7291,
                "total_contest": 1.6009,
                "won_contest": 0.9983,
                "challenges_lost": 0.6999,
                "fouls": 1.2444,
                "fouls_drawn": 0.9271,
                "blocks": 0.3343,
                "big_chances_created": 0.3056,
                "big_chances_missed": 0.0075,
                "xgot": 0.0884,
                "ball_carries": 12.6554,
                "total_progression": 55.8533,
                "progressive_carries": 1.3672,
                "shots_off_target": 0.9209
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0783,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.4477,
                  "creative_index": 1.0173,
                  "expectedGoals": 0.1047,
                  "expectedAssists": 0.1771,
                  "totalOppositionHalfPasses": 25.1948
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.620892882347107,
                    "model_output": 1.6209,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": 0.2062
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1471
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1177
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.1134
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0936
                        }
                      ],
                      "others": 0.0526,
                      "total": 1.6209,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.20836
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125913
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.090455
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.08004
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.061529
                        }
                      ],
                      "others_margin": 0.032906
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.15062452852725983,
                    "model_output": 0.1506,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0159
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0161
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0138
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0078
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0069
                        }
                      ],
                      "others": 0.0052,
                      "total": 0.1506,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": 0.17157
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.148206
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.111523
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.058162
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.04865
                        }
                      ],
                      "others_margin": 0.0347
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.09897927939891815,
                    "model_output": 0.099,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "keyPass",
                          "contribution": 0.0081
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0082
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0079
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0073
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0051
                        }
                      ],
                      "others": -0.0124,
                      "total": 0.099,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "keyPass",
                          "margin": 0.090562
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.0843
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.075568
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.064418
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.044916
                        }
                      ],
                      "others_margin": -0.117942
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.10897524654865265,
                    "model_output": 0.109,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0161
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.013
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0114
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0087
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.006
                        }
                      ],
                      "others": -0.0082,
                      "total": 0.109,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.162256
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.113715
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.090209
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.068415
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.049886
                        }
                      ],
                      "others_margin": -0.072336
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.14242036640644073,
                    "model_output": 0.1424,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0262
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0109
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0091
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0069
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0064
                        }
                      ],
                      "others": 0.0145,
                      "total": 0.1424,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.24372
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.086027
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.066742
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.050071
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.049124
                        }
                      ],
                      "others_margin": 0.107764
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.40929362177848816,
                    "model_output": 0.4093,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0751
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0495
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0254
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.018
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": -0.0126
                        }
                      ],
                      "others": -0.0136,
                      "total": 0.4093,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.211877
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118541
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.059134
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.042262
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": -0.029308
                        }
                      ],
                      "others_margin": -0.032787
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.3301924467086792,
                    "model_output": 1.3302,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.302
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.137
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0291
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0282
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": -0.0278
                        }
                      ],
                      "others": -0.066,
                      "total": 1.3302,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.301958
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.137003
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.029132
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.028225
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": -0.027832
                        }
                      ],
                      "others_margin": -0.065952
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.11037540435791,
                    "model_output": 7.1104,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0874
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0736
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0288
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.024
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0169
                        }
                      ],
                      "others": 0.0245,
                      "total": 7.1104,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.087376
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.073625
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.028754
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.024018
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.016942
                        }
                      ],
                      "others_margin": 0.024467
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 46,
                  "role_matches": 41,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9986, quality 0.456)",
              "stats": {
                "key_pass": 1.6186,
                "expected_assists": 0.1504,
                "assists": 0.0988,
                "assist_rate": 0.0988,
                "expected_goals": 0.1088,
                "goals": 0.1422,
                "goal_rate": 0.1422,
                "shots_on_target": 0.4087,
                "total_shots": 1.3283,
                "rating": 7.1104,
                "minutes": 82.87,
                "total_pass": 39.8734,
                "accurate_pass": 33.2401,
                "duels_won": 4.5533,
                "total_long_balls": 4.0267,
                "accurate_long_balls": 1.7242,
                "total_own_half_passes": 14.3371,
                "accurate_own_half_passes": 13.2212,
                "total_opp_half_passes": 25.5363,
                "accurate_opp_half_passes": 20.0189,
                "crosses_total": 4.1268,
                "crosses_accurate": 1.2248,
                "touches": 57.4002,
                "possession_lost": 12.416,
                "dispossessed": 0.7822,
                "duels_lost": 4.5561,
                "aerial_won": 0.7692,
                "aerial_lost": 1.2619,
                "interceptions": 0.7509,
                "tackles_won": 1.1641,
                "tackles": 1.8725,
                "clearances": 1.7267,
                "total_contest": 1.5987,
                "won_contest": 0.9969,
                "challenges_lost": 0.6989,
                "fouls": 1.2427,
                "fouls_drawn": 0.9258,
                "blocks": 0.3338,
                "big_chances_created": 0.3052,
                "big_chances_missed": 0.0075,
                "xgot": 0.0883,
                "ball_carries": 12.6377,
                "total_progression": 55.7751,
                "progressive_carries": 1.3653,
                "shots_off_target": 0.9196
              },
              "params": {
                "market_value_eur": 4500000,
                "quality_factor": 0.456,
                "boost_factor": 0.9986,
                "reference_quality": 0.505,
                "history_matches": 46,
                "history_shrink": 0.098,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0115)",
              "stats": {
                "key_pass": 1.6186,
                "expected_assists": 0.1504,
                "assists": 0.0977,
                "assist_rate": 0.0977,
                "expected_goals": 0.1088,
                "goals": 0.1406,
                "goal_rate": 0.1406,
                "shots_on_target": 0.4079,
                "total_shots": 1.3486,
                "rating": 7.1104,
                "minutes": 82.87,
                "total_pass": 39.8734,
                "accurate_pass": 33.2401,
                "duels_won": 4.5533,
                "total_long_balls": 4.0267,
                "accurate_long_balls": 1.7242,
                "total_own_half_passes": 14.3371,
                "accurate_own_half_passes": 13.2212,
                "total_opp_half_passes": 25.5363,
                "accurate_opp_half_passes": 20.0189,
                "crosses_total": 4.0912,
                "crosses_accurate": 1.2248,
                "touches": 57.4002,
                "possession_lost": 12.416,
                "dispossessed": 0.7822,
                "duels_lost": 4.5561,
                "aerial_won": 0.7692,
                "aerial_lost": 1.2619,
                "interceptions": 0.7462,
                "tackles_won": 1.1664,
                "tackles": 1.8725,
                "clearances": 1.7267,
                "total_contest": 1.5987,
                "won_contest": 0.9969,
                "challenges_lost": 0.6989,
                "fouls": 1.2363,
                "fouls_drawn": 0.923,
                "blocks": 0.3338,
                "big_chances_created": 0.3052,
                "big_chances_missed": 0.0075,
                "xgot": 0.0883,
                "ball_carries": 12.6377,
                "total_progression": 55.7751,
                "progressive_carries": 1.3653,
                "shots_off_target": 0.9196
              },
              "params": {
                "blend_weight": 0.0115,
                "history_matches": 46,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9208,
                "prior_reliability": 0.18,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 4.1268,
                  "after": 4.0912
                },
                {
                  "stat": "totalShots",
                  "before": 1.3283,
                  "after": 1.3486
                },
                {
                  "stat": "fouls",
                  "before": 1.2427,
                  "after": 1.2363
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.6186,
                "expected_assists": 0.1504,
                "assists": 0.0977,
                "assist_rate": 0.0977,
                "expected_goals": 0.1088,
                "goals": 0.1406,
                "goal_rate": 0.1406,
                "shots_on_target": 0.4079,
                "total_shots": 1.3486,
                "rating": 7.1104,
                "minutes": 82.87,
                "total_pass": 39.8734,
                "accurate_pass": 33.2401,
                "duels_won": 4.5533,
                "total_long_balls": 4.0267,
                "accurate_long_balls": 1.7242,
                "total_own_half_passes": 14.3371,
                "accurate_own_half_passes": 13.2212,
                "total_opp_half_passes": 25.5363,
                "accurate_opp_half_passes": 20.0189,
                "crosses_total": 4.0912,
                "crosses_accurate": 1.2248,
                "touches": 57.4002,
                "possession_lost": 12.416,
                "dispossessed": 0.7822,
                "duels_lost": 4.5561,
                "aerial_won": 0.7692,
                "aerial_lost": 1.2619,
                "interceptions": 0.7462,
                "tackles_won": 1.1664,
                "tackles": 1.8725,
                "clearances": 1.7267,
                "total_contest": 1.5987,
                "won_contest": 0.9969,
                "challenges_lost": 0.6989,
                "fouls": 1.2363,
                "fouls_drawn": 0.923,
                "blocks": 0.3338,
                "big_chances_created": 0.3052,
                "big_chances_missed": 0.0075,
                "xgot": 0.0883,
                "ball_carries": 12.6377,
                "total_progression": 55.7751,
                "progressive_carries": 1.3653,
                "shots_off_target": 0.9196
              },
              "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.6186,
                "expected_assists": 0.1504,
                "assists": 0.0977,
                "assist_rate": 0.0977,
                "expected_goals": 0.0944,
                "goals": 0.122,
                "goal_rate": 0.122,
                "shots_on_target": 0.3541,
                "total_shots": 1.1706,
                "rating": 7.1104,
                "minutes": 82.87,
                "total_pass": 39.8734,
                "accurate_pass": 33.2401,
                "duels_won": 4.5533,
                "total_long_balls": 4.0267,
                "accurate_long_balls": 1.7242,
                "total_own_half_passes": 14.3371,
                "accurate_own_half_passes": 13.2212,
                "total_opp_half_passes": 25.5363,
                "accurate_opp_half_passes": 20.0189,
                "crosses_total": 4.0912,
                "crosses_accurate": 1.2248,
                "touches": 57.4002,
                "possession_lost": 12.416,
                "dispossessed": 0.7822,
                "duels_lost": 4.5561,
                "aerial_won": 0.9,
                "aerial_lost": 1.2619,
                "interceptions": 0.7462,
                "tackles_won": 1.1664,
                "tackles": 1.8725,
                "clearances": 1.7267,
                "total_contest": 1.5987,
                "won_contest": 0.9969,
                "challenges_lost": 0.6989,
                "fouls": 1.2363,
                "fouls_drawn": 0.923,
                "blocks": 0.3338,
                "big_chances_created": 0.3052,
                "big_chances_missed": 0.0065,
                "xgot": 0.0766,
                "ball_carries": 12.6377,
                "total_progression": 55.7751,
                "progressive_carries": 1.3653,
                "shots_off_target": 0.7982,
                "duel_xg_multiplier": 0.868,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.39,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Juan Foyth",
                "opponent_faced": "Juan Foyth",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Juan Foyth",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                  "duel_win_rate": 0.39,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.868,
                  "skill_edge": -0.0418,
                  "height_edge": -0.048,
                  "attacker_skill": 0.456,
                  "defender_skill": 0.5489,
                  "attacker_role": "LW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Juan Foyth",
                      "market_value": 8600000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.5489
                    }
                  ],
                  "xg_override": 0.0944
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.3486,
                  "after": 1.1706
                },
                {
                  "stat": "aerialWon",
                  "before": 0.7692,
                  "after": 0.9
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9196,
                  "after": 0.7982
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4079,
                  "after": 0.3541
                },
                {
                  "stat": "goals",
                  "before": 0.1406,
                  "after": 0.122
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1088,
                  "after": 0.0944
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0883,
                  "after": 0.0766
                }
              ]
            },
            {
              "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.6186,
                "expected_assists": 0.1504,
                "assist_rate": 0.0977,
                "assists": 0,
                "expected_goals": 0.0944,
                "goal_rate": 0.122,
                "goals": 0,
                "shots_on_target": 0.3541,
                "total_shots": 1.1706,
                "rating": 7.1104,
                "minutes": 82.87,
                "total_pass": 39.8734,
                "accurate_pass": 33.2401,
                "duels_won": 4.5533,
                "total_long_balls": 4.0267,
                "accurate_long_balls": 1.7242,
                "total_own_half_passes": 14.3371,
                "accurate_own_half_passes": 13.2212,
                "total_opp_half_passes": 25.5363,
                "accurate_opp_half_passes": 20.0189,
                "crosses_total": 4.0912,
                "crosses_accurate": 1.2248,
                "touches": 57.4002,
                "possession_lost": 12.416,
                "dispossessed": 0.7822,
                "duels_lost": 4.5561,
                "aerial_won": 0.9,
                "aerial_lost": 1.2619,
                "interceptions": 0.7462,
                "tackles_won": 1.1664,
                "tackles": 1.8725,
                "clearances": 1.7267,
                "total_contest": 1.5987,
                "won_contest": 0.9969,
                "challenges_lost": 0.6989,
                "fouls": 1.2363,
                "fouls_drawn": 0.923,
                "blocks": 0.3338,
                "big_chances_created": 0.3052,
                "big_chances_missed": 0.0065,
                "xgot": 0.0766,
                "ball_carries": 12.6377,
                "total_progression": 55.7751,
                "progressive_carries": 1.3653,
                "shots_off_target": 0.7982,
                "duel_xg_multiplier": 0.868,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.39,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Juan Foyth",
                "opponent_faced": "Juan Foyth",
                "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.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "key_pass": 1.6186,
                "expected_assists": 0.1652,
                "assist_rate": 0.0977,
                "assists": 0,
                "expected_goals": 0.1116,
                "goal_rate": 0.122,
                "goals": 0,
                "shots_on_target": 0.3541,
                "total_shots": 1.1706,
                "rating": 7.1104,
                "minutes": 82.87,
                "total_pass": 39.8734,
                "accurate_pass": 33.2401,
                "duels_won": 4.5533,
                "total_long_balls": 4.0267,
                "accurate_long_balls": 1.7242,
                "total_own_half_passes": 14.3371,
                "accurate_own_half_passes": 13.2212,
                "total_opp_half_passes": 25.5363,
                "accurate_opp_half_passes": 20.0189,
                "crosses_total": 4.0912,
                "crosses_accurate": 1.2248,
                "touches": 57.4002,
                "possession_lost": 12.416,
                "dispossessed": 0.7822,
                "duels_lost": 4.5561,
                "aerial_won": 0.9,
                "aerial_lost": 1.2619,
                "interceptions": 0.7462,
                "tackles_won": 1.1664,
                "tackles": 1.8725,
                "clearances": 1.7267,
                "total_contest": 1.5987,
                "won_contest": 0.9969,
                "challenges_lost": 0.6989,
                "fouls": 1.2363,
                "fouls_drawn": 0.923,
                "blocks": 0.3338,
                "big_chances_created": 0.3052,
                "big_chances_missed": 0.0065,
                "xgot": 0.0906,
                "ball_carries": 12.6377,
                "total_progression": 55.7751,
                "progressive_carries": 1.3653,
                "shots_off_target": 0.7982,
                "duel_xg_multiplier": 0.868,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.39,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Juan Foyth",
                "opponent_faced": "Juan Foyth",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1911,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0944,
                  "after": 0.1116
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1504,
                  "after": 0.1652
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 77.0)",
              "stats": {
                "key_pass": 1.6186,
                "expected_assists": 0.1652,
                "assist_rate": 0.0977,
                "assists": 0,
                "expected_goals": 0.1116,
                "goal_rate": 0.122,
                "goals": 0,
                "shots_on_target": 0.3541,
                "total_shots": 1.1706,
                "rating": 7.1104,
                "minutes": 82.87,
                "total_pass": 39.8734,
                "accurate_pass": 33.2401,
                "duels_won": 4.5533,
                "total_long_balls": 4.0267,
                "accurate_long_balls": 1.7242,
                "total_own_half_passes": 14.3371,
                "accurate_own_half_passes": 13.2212,
                "total_opp_half_passes": 25.5363,
                "accurate_opp_half_passes": 20.0189,
                "crosses_total": 4.0912,
                "crosses_accurate": 1.2248,
                "touches": 57.4002,
                "possession_lost": 12.416,
                "dispossessed": 0.7822,
                "duels_lost": 4.5561,
                "aerial_won": 0.9,
                "aerial_lost": 1.2619,
                "interceptions": 0.7462,
                "tackles_won": 1.1664,
                "tackles": 1.8725,
                "clearances": 1.7267,
                "total_contest": 1.5987,
                "won_contest": 0.9969,
                "challenges_lost": 0.6989,
                "fouls": 1.2363,
                "fouls_drawn": 0.923,
                "blocks": 0.3338,
                "big_chances_created": 0.3052,
                "big_chances_missed": 0.0065,
                "xgot": 0.0906,
                "ball_carries": 12.6377,
                "total_progression": 55.7751,
                "progressive_carries": 1.3653,
                "shots_off_target": 0.7982,
                "duel_xg_multiplier": 0.868,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.39,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Juan Foyth",
                "opponent_faced": "Juan Foyth",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1911,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2628,
                "fifa_rank": 1553.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 1.6186,
                "expected_assists": 0.1652,
                "assist_rate": 0.0977,
                "assists": 0,
                "expected_goals": 0.1116,
                "goal_rate": 0.122,
                "goals": 0,
                "shots_on_target": 0.3541,
                "total_shots": 1.1706,
                "rating": 7.1104,
                "minutes": 82.87,
                "total_pass": 39.8734,
                "accurate_pass": 33.2401,
                "duels_won": 4.5533,
                "total_long_balls": 4.0267,
                "accurate_long_balls": 1.7242,
                "total_own_half_passes": 14.3371,
                "accurate_own_half_passes": 13.2212,
                "total_opp_half_passes": 25.5363,
                "accurate_opp_half_passes": 20.0189,
                "crosses_total": 4.0912,
                "crosses_accurate": 1.2248,
                "touches": 57.4002,
                "possession_lost": 12.416,
                "dispossessed": 0.7822,
                "duels_lost": 4.5561,
                "aerial_won": 0.9,
                "aerial_lost": 1.2619,
                "interceptions": 0.7462,
                "tackles_won": 1.1664,
                "tackles": 1.8725,
                "clearances": 1.7267,
                "total_contest": 1.5987,
                "won_contest": 0.9969,
                "challenges_lost": 0.6989,
                "fouls": 1.2363,
                "fouls_drawn": 0.923,
                "blocks": 0.3338,
                "big_chances_created": 0.3052,
                "big_chances_missed": 0.0065,
                "xgot": 0.0906,
                "ball_carries": 12.6377,
                "total_progression": 55.7751,
                "progressive_carries": 1.3653,
                "shots_off_target": 0.7982,
                "duel_xg_multiplier": 0.868,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.39,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Juan Foyth",
                "opponent_faced": "Juan Foyth",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1056,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1911,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1056,
                "goal_rate": 0.122,
                "scorer_weight": 0.1329,
                "squad_weight_total": 1.3186,
                "weight_share": 0.1008,
                "finishing_factor": 1.1911,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.6186,
                "expected_assists": 0.1652,
                "assist_rate": 0.0977,
                "assists": 0,
                "expected_goals": 0.1116,
                "goal_rate": 0.122,
                "goals": 0,
                "shots_on_target": 0.3541,
                "total_shots": 1.1706,
                "rating": 7.1104,
                "minutes": 82.87,
                "total_pass": 39.8734,
                "accurate_pass": 33.2401,
                "duels_won": 4.5533,
                "total_long_balls": 4.0267,
                "accurate_long_balls": 1.7242,
                "total_own_half_passes": 14.3371,
                "accurate_own_half_passes": 13.2212,
                "total_opp_half_passes": 25.5363,
                "accurate_opp_half_passes": 20.0189,
                "crosses_total": 4.0912,
                "crosses_accurate": 1.2248,
                "touches": 57.4002,
                "possession_lost": 12.416,
                "dispossessed": 0.7822,
                "duels_lost": 4.5561,
                "aerial_won": 0.9,
                "aerial_lost": 1.2619,
                "interceptions": 0.7462,
                "tackles_won": 1.1664,
                "tackles": 1.8725,
                "clearances": 1.7267,
                "total_contest": 1.5987,
                "won_contest": 0.9969,
                "challenges_lost": 0.6989,
                "fouls": 1.2363,
                "fouls_drawn": 0.923,
                "blocks": 0.3338,
                "big_chances_created": 0.3052,
                "big_chances_missed": 0.0065,
                "xgot": 0.0906,
                "ball_carries": 12.6377,
                "total_progression": 55.7751,
                "progressive_carries": 1.3653,
                "shots_off_target": 0.7982,
                "duel_xg_multiplier": 0.868,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.39,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Juan Foyth",
                "opponent_faced": "Juan Foyth",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1056,
                "projected_assists": 0,
                "assist_probability": 0.1523,
                "finishing_factor": 1.1911,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1523,
                "assist_rate": 0.0977,
                "provider_weight": 0.1322,
                "squad_weight_total": 0.9085,
                "weight_share": 0.1455,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Quilindschy Hartman": {
          "player_id": 1392044,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 183,
          "market_value": 11600000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 2,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7058,
            "minutes": 87,
            "total_pass": 42,
            "accurate_pass": 33,
            "duels_won": 4,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 22,
            "accurate_own_half_passes": 19,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 14,
            "crosses_total": 3,
            "crosses_accurate": 0,
            "touches": 64,
            "possession_lost": 14.1463,
            "dispossessed": 0.342,
            "duels_lost": 3,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.1128,
            "assists": 0,
            "expected_goals": 0.0182,
            "expected_assists": 0.0795,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0044,
            "ball_carries": 9,
            "total_progression": 25,
            "progressive_carries": 0,
            "key_pass": 1,
            "shots_off_target": 0,
            "opponent_faced": "Gerard Moreno",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.018,
            "projected_assists": 0,
            "assist_probability": 0.0764,
            "finishing_factor": 0.8,
            "creation_factor": 1.25,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.014,
                "expected_assists": 0.0044,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 53,
                "accurate_pass": 45,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 7,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1148,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 36,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0124,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 25,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0916,
                "total_shots": 0,
                "total_pass": 48,
                "accurate_pass": 41,
                "key_pass": 3,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 16,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1839,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 9,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023940,
              "match_date": "2026-05-01",
              "home_team": "Leeds United",
              "away_team": "Burnley",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Burnley",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 65,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0024,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 17,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024003,
              "match_date": "2026-04-22",
              "home_team": "Burnley",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Burnley",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1302,
                "expected_assists": 0.0021,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 19,
                "tackles": 10,
                "tackles_won": 6,
                "interceptions": 2,
                "clearances": 4,
                "duels_won": 12,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025041,
              "match_date": "2026-04-19",
              "home_team": "Nottingham Forest",
              "away_team": "Burnley",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Burnley",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.2214,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 39,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024002,
              "match_date": "2026-04-11",
              "home_team": "Burnley",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Burnley",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 82,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0218,
                "total_shots": 0,
                "total_pass": 48,
                "accurate_pass": 36,
                "clearances": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024016,
              "match_date": "2026-03-21",
              "home_team": "Fulham",
              "away_team": "Burnley",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Burnley",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.019,
                "expected_assists": 0.2158,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 51,
                "accurate_pass": 45,
                "key_pass": 3,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3658,
            "combined_rank_score": 1619.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2417.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7058,
            "source_file": "data/player_rankings.csv",
            "player_name": "Quilindschy Hartman",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Miguel Almirón",
                  "ranking": 3653
                },
                {
                  "player_name": "Marko Livaja",
                  "ranking": 3654
                },
                {
                  "player_name": "Víctor Chust",
                  "ranking": 3655
                },
                {
                  "player_name": "Kevin Lomónaco",
                  "ranking": 3656
                },
                {
                  "player_name": "Giorgi Kochorashvili",
                  "ranking": 3657
                }
              ],
              "lower": [
                {
                  "player_name": "Oscar Dorley",
                  "ranking": 3659
                },
                {
                  "player_name": "Mykola Matviienko",
                  "ranking": 3660
                },
                {
                  "player_name": "Hamed Junior Traorè",
                  "ranking": 3661
                },
                {
                  "player_name": "Andrés Cubas",
                  "ranking": 3662
                },
                {
                  "player_name": "Raúl Rangel",
                  "ranking": 3663
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "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.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0017,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "XGBoost regressor (D_service) evaluated 26 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Espanyol, rel: 0.00, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.1432,
                "tackles": 2.1954,
                "tackles_won": 1.5308,
                "clearances": 2.5989,
                "aerial_won": 0.9274,
                "total_shots": 0.4929,
                "rating": 6.7058,
                "minutes": 86.62,
                "total_pass": 42.2939,
                "accurate_pass": 33.3197,
                "duels_won": 4.2362,
                "total_long_balls": 6.3151,
                "accurate_long_balls": 2.5377,
                "total_own_half_passes": 22.1753,
                "accurate_own_half_passes": 18.9214,
                "total_opp_half_passes": 20.1187,
                "accurate_opp_half_passes": 14.3985,
                "crosses_total": 2.5757,
                "crosses_accurate": 0.2668,
                "touches": 63.5902,
                "possession_lost": 14.1223,
                "dispossessed": 0.3414,
                "duels_lost": 2.9515,
                "aerial_lost": 0.4666,
                "total_contest": 0.7906,
                "won_contest": 0.3767,
                "ball_recovery": 4.153,
                "challenges_lost": 0.9121,
                "fouls": 0.8176,
                "fouls_drawn": 0.0815,
                "blocks": 0.1638,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1126,
                "assist_rate": 0.1126,
                "expected_goals": 0.0154,
                "expected_assists": 0.0722,
                "shots_on_target": 0.0643,
                "big_chances_created": 0.2073,
                "xgot": 0.0037,
                "ball_carries": 9.4768,
                "total_progression": 25.4043,
                "progressive_carries": 0.2036,
                "key_pass": 0.7682,
                "shots_off_target": 0.4286
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1522,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1294,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.11,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0935,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0795,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-01",
                    "opponent": "Leeds United",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0675,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-04-22",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0574,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0488,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0415,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0353,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.9457,
                  "aerialWon": 0.8716,
                  "totalClearance_p90": 2.0131,
                  "totalTackle": 2.3991,
                  "totalPass": 38.8897
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.143176794052124,
                    "model_output": 1.1432,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1189
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0612
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0249
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0177
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0174
                        }
                      ],
                      "others": 0.1198,
                      "total": 1.1432,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.128268
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.06009
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.024014
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.017474
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.017185
                        }
                      ],
                      "others_margin": 0.110723
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 2.195392370223999,
                    "model_output": 2.1954,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1829
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1033
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.1036
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0868
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0731
                        }
                      ],
                      "others": 0.26,
                      "total": 2.1954,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124009
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.063796
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.060136
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.047738
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.038518
                        }
                      ],
                      "others_margin": 0.125978
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.5307811498641968,
                    "model_output": 1.5308,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1145
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0858
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0799
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0675
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.048
                        }
                      ],
                      "others": 0.2894,
                      "total": 1.5308,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126954
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.085603
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.073566
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.058203
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.039475
                        }
                      ],
                      "others_margin": 0.209563
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.598865032196045,
                    "model_output": 2.5989,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.4585
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3888
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.3186
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2649
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.172
                        }
                      ],
                      "others": -0.3516,
                      "total": 2.5989,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.143429
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122911
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.099545
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.09107
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.06007
                        }
                      ],
                      "others_margin": -0.126925
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.9273544549942017,
                    "model_output": 0.9274,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.2385
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1564
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1517
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0723
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0511
                        }
                      ],
                      "others": -0.093,
                      "total": 0.9274,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.190137
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128682
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.124543
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.065296
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.048819
                        }
                      ],
                      "others_margin": -0.095664
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.49294260144233704,
                    "model_output": 0.4929,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0579
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0221
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.01
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0097
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0086
                        }
                      ],
                      "others": 0.0069,
                      "total": 0.4929,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.057935
                        },
                        {
                          "name": "rating",
                          "margin": -0.022141
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.009964
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.009663
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.00865
                        }
                      ],
                      "others_margin": 0.006885
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7058024406433105,
                    "model_output": 6.7058,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0163
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0151
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0105
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0101
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.0283,
                      "total": 6.7058,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.016318
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.015086
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.010491
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.010109
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.009429
                        }
                      ],
                      "others_margin": -0.02828
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 26,
                  "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.0017, quality 0.541)",
              "stats": {
                "interceptions": 1.1451,
                "tackles": 2.1991,
                "tackles_won": 1.5334,
                "clearances": 2.6033,
                "aerial_won": 0.9289,
                "total_shots": 0.4938,
                "rating": 6.7058,
                "minutes": 86.62,
                "total_pass": 42.3658,
                "accurate_pass": 33.3763,
                "duels_won": 4.2434,
                "total_long_balls": 6.3258,
                "accurate_long_balls": 2.542,
                "total_own_half_passes": 22.213,
                "accurate_own_half_passes": 18.9536,
                "total_opp_half_passes": 20.1529,
                "accurate_opp_half_passes": 14.423,
                "crosses_total": 2.5801,
                "crosses_accurate": 0.2673,
                "touches": 63.6983,
                "possession_lost": 14.1463,
                "dispossessed": 0.342,
                "duels_lost": 2.9565,
                "aerial_lost": 0.4674,
                "total_contest": 0.7919,
                "won_contest": 0.3773,
                "ball_recovery": 4.1601,
                "challenges_lost": 0.9137,
                "fouls": 0.819,
                "fouls_drawn": 0.0816,
                "blocks": 0.1641,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1128,
                "assist_rate": 0.1128,
                "expected_goals": 0.0154,
                "expected_assists": 0.0723,
                "shots_on_target": 0.0644,
                "big_chances_created": 0.2077,
                "xgot": 0.0037,
                "ball_carries": 9.4929,
                "total_progression": 25.4475,
                "progressive_carries": 0.2039,
                "key_pass": 0.7695,
                "shots_off_target": 0.4293
              },
              "params": {
                "market_value_eur": 11600000,
                "quality_factor": 0.5411,
                "boost_factor": 1.0017,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1451,
                "tackles": 2.1991,
                "tackles_won": 1.5334,
                "clearances": 2.6033,
                "aerial_won": 0.9289,
                "total_shots": 0.4938,
                "rating": 6.7058,
                "minutes": 86.62,
                "total_pass": 42.3658,
                "accurate_pass": 33.3763,
                "duels_won": 4.2434,
                "total_long_balls": 6.3258,
                "accurate_long_balls": 2.542,
                "total_own_half_passes": 22.213,
                "accurate_own_half_passes": 18.9536,
                "total_opp_half_passes": 20.1529,
                "accurate_opp_half_passes": 14.423,
                "crosses_total": 2.5801,
                "crosses_accurate": 0.2673,
                "touches": 63.6983,
                "possession_lost": 14.1463,
                "dispossessed": 0.342,
                "duels_lost": 2.9565,
                "aerial_lost": 0.4674,
                "total_contest": 0.7919,
                "won_contest": 0.3773,
                "ball_recovery": 4.1601,
                "challenges_lost": 0.9137,
                "fouls": 0.819,
                "fouls_drawn": 0.0816,
                "blocks": 0.1641,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1128,
                "assist_rate": 0.1128,
                "expected_goals": 0.0154,
                "expected_assists": 0.0723,
                "shots_on_target": 0.0644,
                "big_chances_created": 0.2077,
                "xgot": 0.0037,
                "ball_carries": 9.4929,
                "total_progression": 25.4475,
                "progressive_carries": 0.2039,
                "key_pass": 0.7695,
                "shots_off_target": 0.4293
              },
              "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.1451,
                "tackles": 2.1991,
                "tackles_won": 1.5334,
                "clearances": 2.6033,
                "aerial_won": 0.9289,
                "total_shots": 0.4938,
                "rating": 6.7058,
                "minutes": 86.62,
                "total_pass": 42.3658,
                "accurate_pass": 33.3763,
                "duels_won": 4.2434,
                "total_long_balls": 6.3258,
                "accurate_long_balls": 2.542,
                "total_own_half_passes": 22.213,
                "accurate_own_half_passes": 18.9536,
                "total_opp_half_passes": 20.1529,
                "accurate_opp_half_passes": 14.423,
                "crosses_total": 2.5801,
                "crosses_accurate": 0.2673,
                "touches": 63.6983,
                "possession_lost": 14.1463,
                "dispossessed": 0.342,
                "duels_lost": 2.9565,
                "aerial_lost": 0.4674,
                "total_contest": 0.7919,
                "won_contest": 0.3773,
                "ball_recovery": 4.1601,
                "challenges_lost": 0.9137,
                "fouls": 0.819,
                "fouls_drawn": 0.0816,
                "blocks": 0.1641,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1128,
                "assist_rate": 0.1128,
                "expected_goals": 0.0154,
                "expected_assists": 0.0723,
                "shots_on_target": 0.0644,
                "big_chances_created": 0.2077,
                "xgot": 0.0037,
                "ball_carries": 9.4929,
                "total_progression": 25.4475,
                "progressive_carries": 0.2039,
                "key_pass": 0.7695,
                "shots_off_target": 0.4293,
                "opponent_faced": "Gerard Moreno",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Gerard Moreno",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1451,
                "tackles": 2.1991,
                "tackles_won": 1.5334,
                "clearances": 2.6033,
                "aerial_won": 0.9289,
                "total_shots": 0.4938,
                "rating": 6.7058,
                "minutes": 86.62,
                "total_pass": 42.3658,
                "accurate_pass": 33.3763,
                "duels_won": 4.2434,
                "total_long_balls": 6.3258,
                "accurate_long_balls": 2.542,
                "total_own_half_passes": 22.213,
                "accurate_own_half_passes": 18.9536,
                "total_opp_half_passes": 20.1529,
                "accurate_opp_half_passes": 14.423,
                "crosses_total": 2.5801,
                "crosses_accurate": 0.2673,
                "touches": 63.6983,
                "possession_lost": 14.1463,
                "dispossessed": 0.342,
                "duels_lost": 2.9565,
                "aerial_lost": 0.4674,
                "total_contest": 0.7919,
                "won_contest": 0.3773,
                "ball_recovery": 4.1601,
                "challenges_lost": 0.9137,
                "fouls": 0.819,
                "fouls_drawn": 0.0816,
                "blocks": 0.1641,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1128,
                "assists": 0,
                "expected_goals": 0.0154,
                "expected_assists": 0.0723,
                "shots_on_target": 0.0644,
                "big_chances_created": 0.2077,
                "xgot": 0.0037,
                "ball_carries": 9.4929,
                "total_progression": 25.4475,
                "progressive_carries": 0.2039,
                "key_pass": 0.7695,
                "shots_off_target": 0.4293,
                "opponent_faced": "Gerard Moreno",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "interceptions": 1.1451,
                "tackles": 2.1991,
                "tackles_won": 1.5334,
                "clearances": 2.6033,
                "aerial_won": 0.9289,
                "total_shots": 0.4938,
                "rating": 6.7058,
                "minutes": 86.62,
                "total_pass": 42.3658,
                "accurate_pass": 33.3763,
                "duels_won": 4.2434,
                "total_long_balls": 6.3258,
                "accurate_long_balls": 2.542,
                "total_own_half_passes": 22.213,
                "accurate_own_half_passes": 18.9536,
                "total_opp_half_passes": 20.1529,
                "accurate_opp_half_passes": 14.423,
                "crosses_total": 2.5801,
                "crosses_accurate": 0.2673,
                "touches": 63.6983,
                "possession_lost": 14.1463,
                "dispossessed": 0.342,
                "duels_lost": 2.9565,
                "aerial_lost": 0.4674,
                "total_contest": 0.7919,
                "won_contest": 0.3773,
                "ball_recovery": 4.1601,
                "challenges_lost": 0.9137,
                "fouls": 0.819,
                "fouls_drawn": 0.0816,
                "blocks": 0.1641,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1128,
                "assists": 0,
                "expected_goals": 0.0182,
                "expected_assists": 0.0795,
                "shots_on_target": 0.0644,
                "big_chances_created": 0.2077,
                "xgot": 0.0044,
                "ball_carries": 9.4929,
                "total_progression": 25.4475,
                "progressive_carries": 0.2039,
                "key_pass": 0.7695,
                "shots_off_target": 0.4293,
                "opponent_faced": "Gerard Moreno",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0723,
                  "after": 0.0795
                }
              ]
            },
            {
              "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": {
                "interceptions": 1.1451,
                "tackles": 2.1991,
                "tackles_won": 1.5334,
                "clearances": 2.6033,
                "aerial_won": 0.9289,
                "total_shots": 0.4938,
                "rating": 6.7058,
                "minutes": 86.62,
                "total_pass": 42.3658,
                "accurate_pass": 33.3763,
                "duels_won": 4.2434,
                "total_long_balls": 6.3258,
                "accurate_long_balls": 2.542,
                "total_own_half_passes": 22.213,
                "accurate_own_half_passes": 18.9536,
                "total_opp_half_passes": 20.1529,
                "accurate_opp_half_passes": 14.423,
                "crosses_total": 2.5801,
                "crosses_accurate": 0.2673,
                "touches": 63.6983,
                "possession_lost": 14.1463,
                "dispossessed": 0.342,
                "duels_lost": 2.9565,
                "aerial_lost": 0.4674,
                "total_contest": 0.7919,
                "won_contest": 0.3773,
                "ball_recovery": 4.1601,
                "challenges_lost": 0.9137,
                "fouls": 0.819,
                "fouls_drawn": 0.0816,
                "blocks": 0.1641,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1128,
                "assists": 0,
                "expected_goals": 0.0182,
                "expected_assists": 0.0795,
                "shots_on_target": 0.0644,
                "big_chances_created": 0.2077,
                "xgot": 0.0044,
                "ball_carries": 9.4929,
                "total_progression": 25.4475,
                "progressive_carries": 0.2039,
                "key_pass": 0.7695,
                "shots_off_target": 0.4293,
                "opponent_faced": "Gerard Moreno",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3658,
                "fifa_rank": 2417.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.1451,
                "tackles": 2.1991,
                "tackles_won": 1.5334,
                "clearances": 2.6033,
                "aerial_won": 0.9289,
                "total_shots": 0.4938,
                "rating": 6.7058,
                "minutes": 86.62,
                "total_pass": 42.3658,
                "accurate_pass": 33.3763,
                "duels_won": 4.2434,
                "total_long_balls": 6.3258,
                "accurate_long_balls": 2.542,
                "total_own_half_passes": 22.213,
                "accurate_own_half_passes": 18.9536,
                "total_opp_half_passes": 20.1529,
                "accurate_opp_half_passes": 14.423,
                "crosses_total": 2.5801,
                "crosses_accurate": 0.2673,
                "touches": 63.6983,
                "possession_lost": 14.1463,
                "dispossessed": 0.342,
                "duels_lost": 2.9565,
                "aerial_lost": 0.4674,
                "total_contest": 0.7919,
                "won_contest": 0.3773,
                "ball_recovery": 4.1601,
                "challenges_lost": 0.9137,
                "fouls": 0.819,
                "fouls_drawn": 0.0816,
                "blocks": 0.1641,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1128,
                "assists": 0,
                "expected_goals": 0.0182,
                "expected_assists": 0.0795,
                "shots_on_target": 0.0644,
                "big_chances_created": 0.2077,
                "xgot": 0.0044,
                "ball_carries": 9.4929,
                "total_progression": 25.4475,
                "progressive_carries": 0.2039,
                "key_pass": 0.7695,
                "shots_off_target": 0.4293,
                "opponent_faced": "Gerard Moreno",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.018,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.018,
                "goal_rate": 0.0,
                "scorer_weight": 0.0146,
                "squad_weight_total": 1.3186,
                "weight_share": 0.011,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.1451,
                "tackles": 2.1991,
                "tackles_won": 1.5334,
                "clearances": 2.6033,
                "aerial_won": 0.9289,
                "total_shots": 0.4938,
                "rating": 6.7058,
                "minutes": 86.62,
                "total_pass": 42.3658,
                "accurate_pass": 33.3763,
                "duels_won": 4.2434,
                "total_long_balls": 6.3258,
                "accurate_long_balls": 2.542,
                "total_own_half_passes": 22.213,
                "accurate_own_half_passes": 18.9536,
                "total_opp_half_passes": 20.1529,
                "accurate_opp_half_passes": 14.423,
                "crosses_total": 2.5801,
                "crosses_accurate": 0.2673,
                "touches": 63.6983,
                "possession_lost": 14.1463,
                "dispossessed": 0.342,
                "duels_lost": 2.9565,
                "aerial_lost": 0.4674,
                "total_contest": 0.7919,
                "won_contest": 0.3773,
                "ball_recovery": 4.1601,
                "challenges_lost": 0.9137,
                "fouls": 0.819,
                "fouls_drawn": 0.0816,
                "blocks": 0.1641,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1128,
                "assists": 0,
                "expected_goals": 0.0182,
                "expected_assists": 0.0795,
                "shots_on_target": 0.0644,
                "big_chances_created": 0.2077,
                "xgot": 0.0044,
                "ball_carries": 9.4929,
                "total_progression": 25.4475,
                "progressive_carries": 0.2039,
                "key_pass": 0.7695,
                "shots_off_target": 0.4293,
                "opponent_faced": "Gerard Moreno",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.018,
                "projected_assists": 0,
                "assist_probability": 0.0764,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0764,
                "assist_rate": 0.1128,
                "provider_weight": 0.0994,
                "squad_weight_total": 0.9085,
                "weight_share": 0.1094,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Leandro Cabrera": {
          "player_id": 81992,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 6,
          "height": 190,
          "market_value": 930000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 3,
            "total_shots": 1,
            "rating": 6.8746,
            "minutes": 90,
            "total_pass": 47,
            "accurate_pass": 37,
            "duels_won": 4,
            "total_long_balls": 8,
            "accurate_long_balls": 3,
            "total_own_half_passes": 28,
            "accurate_own_half_passes": 25,
            "total_opp_half_passes": 19,
            "accurate_opp_half_passes": 12,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 63,
            "possession_lost": 10.3973,
            "dispossessed": 0.1826,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0061,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0798,
            "expected_assists": 0.0298,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0177,
            "ball_carries": 11,
            "total_progression": 36,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 1,
            "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.699,
            "opponent_faced": "Georges Mikautadze",
            "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.0767,
            "projected_assists": 0,
            "assist_probability": 0.0294,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1349,
                "expected_assists": 0.0135,
                "total_shots": 4,
                "shots_on_target": 0,
                "shots_off_target": 3,
                "total_pass": 44,
                "accurate_pass": 31,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 16,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 5,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1257,
                "expected_assists": 0.0061,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 44,
                "accurate_pass": 32,
                "interceptions": 4,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0063,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 40,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0136,
                "expected_assists": 0.0446,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 74,
                "accurate_pass": 67,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 4,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1658,
                "expected_assists": 0.0509,
                "total_shots": 1,
                "total_pass": 50,
                "accurate_pass": 40,
                "interceptions": 3,
                "clearances": 9,
                "aerial_won": 6,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0713,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 36,
                "clearances": 17,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0325,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 48,
                "tackles": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083719,
              "match_date": "2026-05-23",
              "home_team": "Espanyol",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1048,
                "expected_assists": 0.0057,
                "total_shots": 1,
                "total_pass": 41,
                "accurate_pass": 32,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 23,
                "clearances": 11,
                "aerial_won": 4,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083629,
              "match_date": "2026-05-13",
              "home_team": "Espanyol",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0175,
                "expected_assists": 0.0082,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 68,
                "accurate_pass": 56,
                "interceptions": 2,
                "clearances": 7,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3325,
            "combined_rank_score": 1280.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 612.0,
            "sofascore_rating": 6.7757,
            "sofascore_appearances": 37.0,
            "fifa_rank": 1948.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8746,
            "source_file": "data/player_rankings.csv",
            "player_name": "Leandro Cabrera",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Aimar Oroz",
                  "ranking": 3320
                },
                {
                  "player_name": "Konstantinos Koulierakis",
                  "ranking": 3321
                },
                {
                  "player_name": "Óliver Torres",
                  "ranking": 3322
                },
                {
                  "player_name": "Daley Blind",
                  "ranking": 3323
                },
                {
                  "player_name": "Williot Swedberg",
                  "ranking": 3324
                }
              ],
              "lower": [
                {
                  "player_name": "Alejandro Zendejas",
                  "ranking": 3326
                },
                {
                  "player_name": "Sacha Boey",
                  "ranking": 3327
                },
                {
                  "player_name": "Hugo Cuypers",
                  "ranking": 3328
                },
                {
                  "player_name": "Carl Rushworth",
                  "ranking": 3329
                },
                {
                  "player_name": "Juan Brunetta",
                  "ranking": 3330
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 44,
          "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": 44,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9979,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 44 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.1913,
                "tackles": 1.1781,
                "tackles_won": 0.6543,
                "clearances": 6.4842,
                "aerial_won": 3.0578,
                "total_shots": 1.1576,
                "rating": 6.8746,
                "minutes": 90.0,
                "total_pass": 46.9645,
                "accurate_pass": 37.5565,
                "duels_won": 4.1465,
                "total_long_balls": 7.6216,
                "accurate_long_balls": 2.9407,
                "total_own_half_passes": 27.7393,
                "accurate_own_half_passes": 25.2061,
                "total_opp_half_passes": 19.2252,
                "accurate_opp_half_passes": 12.3504,
                "crosses_total": 0.2285,
                "crosses_accurate": 0.0211,
                "touches": 62.8955,
                "possession_lost": 10.4192,
                "dispossessed": 0.183,
                "duels_lost": 2.973,
                "aerial_lost": 1.4286,
                "total_contest": 0.0466,
                "won_contest": 0.019,
                "ball_recovery": 3.2035,
                "challenges_lost": 0.4838,
                "fouls": 0.8824,
                "fouls_drawn": 0.3737,
                "blocks": 0.4353,
                "goals": 0.0061,
                "goal_rate": 0.0061,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0676,
                "expected_assists": 0.0272,
                "shots_on_target": 0.1027,
                "big_chances_created": 0.0021,
                "xgot": 0.015,
                "ball_carries": 11.3406,
                "total_progression": 36.5495,
                "progressive_carries": 0.3385,
                "key_pass": 0.0606,
                "shots_off_target": 1.0549
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 8.1818,
                  "aerialWon": 3.138,
                  "totalClearance_p90": 8.1818,
                  "totalTackle": 0.6373,
                  "totalPass": 46.9645
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1913331747055054,
                    "model_output": 1.1913,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1073
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0676
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0508
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0321
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0163
                        }
                      ],
                      "others": 0.0813,
                      "total": 1.1913,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.116503
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.066941
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.047576
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.028895
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.014547
                        }
                      ],
                      "others_margin": 0.070673
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.1780695915222168,
                    "model_output": 1.1781,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1456
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.1225
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.104
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0424
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0242
                        }
                      ],
                      "others": -0.0253,
                      "total": 1.1781,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.11104
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.104021
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.088944
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.035339
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.020339
                        }
                      ],
                      "others_margin": -0.021192
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6542622447013855,
                    "model_output": 0.6543,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0997
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0755
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0608
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0313
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0271
                        }
                      ],
                      "others": -0.0186,
                      "total": 0.6543,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.125467
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.106751
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.086858
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.043769
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.039499
                        }
                      ],
                      "others_margin": -0.028034
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.484167575836182,
                    "model_output": 6.4842,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.9354
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.545
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.3852
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.3776
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.274
                        }
                      ],
                      "others": 0.5353,
                      "total": 6.4842,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.241041
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117607
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.075504
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.068851
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.04716
                        }
                      ],
                      "others_margin": 0.086138
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 3.0578043460845947,
                    "model_output": 3.0578,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.5759
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2738
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.278
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2653
                        },
                        {
                          "name": "error_severity",
                          "contribution": 0.0517
                        }
                      ],
                      "others": 0.2355,
                      "total": 3.0578,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.34927
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.131158
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117633
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.100641
                        },
                        {
                          "name": "error_severity",
                          "margin": 0.018503
                        }
                      ],
                      "others_margin": 0.080135
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.1576427221298218,
                    "model_output": 1.1576,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.4632
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0832
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0682
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.049
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0289
                        }
                      ],
                      "others": 0.0444,
                      "total": 1.1576,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.463203
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.083173
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.06821
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.04896
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.028919
                        }
                      ],
                      "others_margin": 0.044477
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.874554634094238,
                    "model_output": 6.8746,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0512
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0207
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0206
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": 0.0147
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0087
                        }
                      ],
                      "others": 0.0632,
                      "total": 6.8746,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.051196
                        },
                        {
                          "name": "rating",
                          "margin": -0.020688
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.020632
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": 0.014696
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.008673
                        }
                      ],
                      "others_margin": 0.063139
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 44,
                  "role_matches": 44,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9979, quality 0.437)",
              "stats": {
                "interceptions": 1.1888,
                "tackles": 1.1756,
                "tackles_won": 0.6529,
                "clearances": 6.4706,
                "aerial_won": 3.0514,
                "total_shots": 1.1552,
                "rating": 6.8746,
                "minutes": 90.0,
                "total_pass": 46.8659,
                "accurate_pass": 37.4776,
                "duels_won": 4.1378,
                "total_long_balls": 7.6056,
                "accurate_long_balls": 2.9345,
                "total_own_half_passes": 27.681,
                "accurate_own_half_passes": 25.1532,
                "total_opp_half_passes": 19.1848,
                "accurate_opp_half_passes": 12.3245,
                "crosses_total": 0.228,
                "crosses_accurate": 0.0211,
                "touches": 62.7634,
                "possession_lost": 10.3973,
                "dispossessed": 0.1826,
                "duels_lost": 2.9668,
                "aerial_lost": 1.4256,
                "total_contest": 0.0465,
                "won_contest": 0.019,
                "ball_recovery": 3.1968,
                "challenges_lost": 0.4828,
                "fouls": 0.8805,
                "fouls_drawn": 0.3729,
                "blocks": 0.4344,
                "goals": 0.0061,
                "goal_rate": 0.0061,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0675,
                "expected_assists": 0.0271,
                "shots_on_target": 0.1025,
                "big_chances_created": 0.0021,
                "xgot": 0.015,
                "ball_carries": 11.3168,
                "total_progression": 36.4727,
                "progressive_carries": 0.3378,
                "key_pass": 0.0605,
                "shots_off_target": 1.0527
              },
              "params": {
                "market_value_eur": 930000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9979,
                "reference_quality": 0.505,
                "history_matches": 44,
                "history_shrink": 0.102,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1888,
                "tackles": 1.1756,
                "tackles_won": 0.6529,
                "clearances": 6.4706,
                "aerial_won": 3.0514,
                "total_shots": 1.1552,
                "rating": 6.8746,
                "minutes": 90.0,
                "total_pass": 46.8659,
                "accurate_pass": 37.4776,
                "duels_won": 4.1378,
                "total_long_balls": 7.6056,
                "accurate_long_balls": 2.9345,
                "total_own_half_passes": 27.681,
                "accurate_own_half_passes": 25.1532,
                "total_opp_half_passes": 19.1848,
                "accurate_opp_half_passes": 12.3245,
                "crosses_total": 0.228,
                "crosses_accurate": 0.0211,
                "touches": 62.7634,
                "possession_lost": 10.3973,
                "dispossessed": 0.1826,
                "duels_lost": 2.9668,
                "aerial_lost": 1.4256,
                "total_contest": 0.0465,
                "won_contest": 0.019,
                "ball_recovery": 3.1968,
                "challenges_lost": 0.4828,
                "fouls": 0.8805,
                "fouls_drawn": 0.3729,
                "blocks": 0.4344,
                "goals": 0.0061,
                "goal_rate": 0.0061,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0675,
                "expected_assists": 0.0271,
                "shots_on_target": 0.1025,
                "big_chances_created": 0.0021,
                "xgot": 0.015,
                "ball_carries": 11.3168,
                "total_progression": 36.4727,
                "progressive_carries": 0.3378,
                "key_pass": 0.0605,
                "shots_off_target": 1.0527
              },
              "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.1888,
                "tackles": 1.1756,
                "tackles_won": 0.6529,
                "clearances": 6.4706,
                "aerial_won": 3.0514,
                "total_shots": 1.1552,
                "rating": 6.8746,
                "minutes": 90.0,
                "total_pass": 46.8659,
                "accurate_pass": 37.4776,
                "duels_won": 4.1378,
                "total_long_balls": 7.6056,
                "accurate_long_balls": 2.9345,
                "total_own_half_passes": 27.681,
                "accurate_own_half_passes": 25.1532,
                "total_opp_half_passes": 19.1848,
                "accurate_opp_half_passes": 12.3245,
                "crosses_total": 0.228,
                "crosses_accurate": 0.0211,
                "touches": 62.7634,
                "possession_lost": 10.3973,
                "dispossessed": 0.1826,
                "duels_lost": 2.9668,
                "aerial_lost": 1.4256,
                "total_contest": 0.0465,
                "won_contest": 0.019,
                "ball_recovery": 3.1968,
                "challenges_lost": 0.4828,
                "fouls": 0.8805,
                "fouls_drawn": 0.3729,
                "blocks": 0.4344,
                "goals": 0.0061,
                "goal_rate": 0.0061,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0675,
                "expected_assists": 0.0271,
                "shots_on_target": 0.1025,
                "big_chances_created": 0.0021,
                "xgot": 0.015,
                "ball_carries": 11.3168,
                "total_progression": 36.4727,
                "progressive_carries": 0.3378,
                "key_pass": 0.0605,
                "shots_off_target": 1.0527,
                "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.699,
                "opponent_faced": "Georges Mikautadze",
                "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": "Georges Mikautadze",
                  "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.1888,
                "tackles": 1.1756,
                "tackles_won": 0.6529,
                "clearances": 6.4706,
                "aerial_won": 3.0514,
                "total_shots": 1.1552,
                "rating": 6.8746,
                "minutes": 90.0,
                "total_pass": 46.8659,
                "accurate_pass": 37.4776,
                "duels_won": 4.1378,
                "total_long_balls": 7.6056,
                "accurate_long_balls": 2.9345,
                "total_own_half_passes": 27.681,
                "accurate_own_half_passes": 25.1532,
                "total_opp_half_passes": 19.1848,
                "accurate_opp_half_passes": 12.3245,
                "crosses_total": 0.228,
                "crosses_accurate": 0.0211,
                "touches": 62.7634,
                "possession_lost": 10.3973,
                "dispossessed": 0.1826,
                "duels_lost": 2.9668,
                "aerial_lost": 1.4256,
                "total_contest": 0.0465,
                "won_contest": 0.019,
                "ball_recovery": 3.1968,
                "challenges_lost": 0.4828,
                "fouls": 0.8805,
                "fouls_drawn": 0.3729,
                "blocks": 0.4344,
                "goal_rate": 0.0061,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0675,
                "expected_assists": 0.0271,
                "shots_on_target": 0.1025,
                "big_chances_created": 0.0021,
                "xgot": 0.015,
                "ball_carries": 11.3168,
                "total_progression": 36.4727,
                "progressive_carries": 0.3378,
                "key_pass": 0.0605,
                "shots_off_target": 1.0527,
                "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.699,
                "opponent_faced": "Georges Mikautadze",
                "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.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "interceptions": 1.1888,
                "tackles": 1.1756,
                "tackles_won": 0.6529,
                "clearances": 6.4706,
                "aerial_won": 3.0514,
                "total_shots": 1.1552,
                "rating": 6.8746,
                "minutes": 90.0,
                "total_pass": 46.8659,
                "accurate_pass": 37.4776,
                "duels_won": 4.1378,
                "total_long_balls": 7.6056,
                "accurate_long_balls": 2.9345,
                "total_own_half_passes": 27.681,
                "accurate_own_half_passes": 25.1532,
                "total_opp_half_passes": 19.1848,
                "accurate_opp_half_passes": 12.3245,
                "crosses_total": 0.228,
                "crosses_accurate": 0.0211,
                "touches": 62.7634,
                "possession_lost": 10.3973,
                "dispossessed": 0.1826,
                "duels_lost": 2.9668,
                "aerial_lost": 1.4256,
                "total_contest": 0.0465,
                "won_contest": 0.019,
                "ball_recovery": 3.1968,
                "challenges_lost": 0.4828,
                "fouls": 0.8805,
                "fouls_drawn": 0.3729,
                "blocks": 0.4344,
                "goal_rate": 0.0061,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0798,
                "expected_assists": 0.0298,
                "shots_on_target": 0.1025,
                "big_chances_created": 0.0021,
                "xgot": 0.0177,
                "ball_carries": 11.3168,
                "total_progression": 36.4727,
                "progressive_carries": 0.3378,
                "key_pass": 0.0605,
                "shots_off_target": 1.0527,
                "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.699,
                "opponent_faced": "Georges Mikautadze",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0675,
                  "after": 0.0798
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 76.0)",
              "stats": {
                "interceptions": 1.1888,
                "tackles": 1.1756,
                "tackles_won": 0.6529,
                "clearances": 6.4706,
                "aerial_won": 3.0514,
                "total_shots": 1.1552,
                "rating": 6.8746,
                "minutes": 90.0,
                "total_pass": 46.8659,
                "accurate_pass": 37.4776,
                "duels_won": 4.1378,
                "total_long_balls": 7.6056,
                "accurate_long_balls": 2.9345,
                "total_own_half_passes": 27.681,
                "accurate_own_half_passes": 25.1532,
                "total_opp_half_passes": 19.1848,
                "accurate_opp_half_passes": 12.3245,
                "crosses_total": 0.228,
                "crosses_accurate": 0.0211,
                "touches": 62.7634,
                "possession_lost": 10.3973,
                "dispossessed": 0.1826,
                "duels_lost": 2.9668,
                "aerial_lost": 1.4256,
                "total_contest": 0.0465,
                "won_contest": 0.019,
                "ball_recovery": 3.1968,
                "challenges_lost": 0.4828,
                "fouls": 0.8805,
                "fouls_drawn": 0.3729,
                "blocks": 0.4344,
                "goal_rate": 0.0061,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0798,
                "expected_assists": 0.0298,
                "shots_on_target": 0.1025,
                "big_chances_created": 0.0021,
                "xgot": 0.0177,
                "ball_carries": 11.3168,
                "total_progression": 36.4727,
                "progressive_carries": 0.3378,
                "key_pass": 0.0605,
                "shots_off_target": 1.0527,
                "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.699,
                "opponent_faced": "Georges Mikautadze",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 76.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": 3325,
                "fifa_rank": 1948.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.1888,
                "tackles": 1.1756,
                "tackles_won": 0.6529,
                "clearances": 6.4706,
                "aerial_won": 3.0514,
                "total_shots": 1.1552,
                "rating": 6.8746,
                "minutes": 90.0,
                "total_pass": 46.8659,
                "accurate_pass": 37.4776,
                "duels_won": 4.1378,
                "total_long_balls": 7.6056,
                "accurate_long_balls": 2.9345,
                "total_own_half_passes": 27.681,
                "accurate_own_half_passes": 25.1532,
                "total_opp_half_passes": 19.1848,
                "accurate_opp_half_passes": 12.3245,
                "crosses_total": 0.228,
                "crosses_accurate": 0.0211,
                "touches": 62.7634,
                "possession_lost": 10.3973,
                "dispossessed": 0.1826,
                "duels_lost": 2.9668,
                "aerial_lost": 1.4256,
                "total_contest": 0.0465,
                "won_contest": 0.019,
                "ball_recovery": 3.1968,
                "challenges_lost": 0.4828,
                "fouls": 0.8805,
                "fouls_drawn": 0.3729,
                "blocks": 0.4344,
                "goal_rate": 0.0061,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0798,
                "expected_assists": 0.0298,
                "shots_on_target": 0.1025,
                "big_chances_created": 0.0021,
                "xgot": 0.0177,
                "ball_carries": 11.3168,
                "total_progression": 36.4727,
                "progressive_carries": 0.3378,
                "key_pass": 0.0605,
                "shots_off_target": 1.0527,
                "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.699,
                "opponent_faced": "Georges Mikautadze",
                "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.0767,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0767,
                "goal_rate": 0.0061,
                "scorer_weight": 0.0638,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0484,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.1888,
                "tackles": 1.1756,
                "tackles_won": 0.6529,
                "clearances": 6.4706,
                "aerial_won": 3.0514,
                "total_shots": 1.1552,
                "rating": 6.8746,
                "minutes": 90.0,
                "total_pass": 46.8659,
                "accurate_pass": 37.4776,
                "duels_won": 4.1378,
                "total_long_balls": 7.6056,
                "accurate_long_balls": 2.9345,
                "total_own_half_passes": 27.681,
                "accurate_own_half_passes": 25.1532,
                "total_opp_half_passes": 19.1848,
                "accurate_opp_half_passes": 12.3245,
                "crosses_total": 0.228,
                "crosses_accurate": 0.0211,
                "touches": 62.7634,
                "possession_lost": 10.3973,
                "dispossessed": 0.1826,
                "duels_lost": 2.9668,
                "aerial_lost": 1.4256,
                "total_contest": 0.0465,
                "won_contest": 0.019,
                "ball_recovery": 3.1968,
                "challenges_lost": 0.4828,
                "fouls": 0.8805,
                "fouls_drawn": 0.3729,
                "blocks": 0.4344,
                "goal_rate": 0.0061,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0798,
                "expected_assists": 0.0298,
                "shots_on_target": 0.1025,
                "big_chances_created": 0.0021,
                "xgot": 0.0177,
                "ball_carries": 11.3168,
                "total_progression": 36.4727,
                "progressive_carries": 0.3378,
                "key_pass": 0.0605,
                "shots_off_target": 1.0527,
                "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.699,
                "opponent_faced": "Georges Mikautadze",
                "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.0767,
                "projected_assists": 0,
                "assist_probability": 0.0294,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0294,
                "assist_rate": 0.0,
                "provider_weight": 0.0238,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0262,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Vanja Drkušić": {
          "player_id": 908617,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 16,
          "height": 186,
          "market_value": 5500000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 6.7446,
            "minutes": 85,
            "total_pass": 38,
            "accurate_pass": 30,
            "duels_won": 4,
            "total_long_balls": 8,
            "accurate_long_balls": 2,
            "total_own_half_passes": 29,
            "accurate_own_half_passes": 26,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 53,
            "possession_lost": 9.2965,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 2,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0014,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 11,
            "total_progression": 14,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.8,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.699,
            "opponent_faced": "Georges Mikautadze",
            "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.0014,
            "finishing_factor": 1.0,
            "creation_factor": 0.9747,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 89,
                "rating": 7.2,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 42,
                "accurate_pass": 33,
                "tackles": 2,
                "tackles_won": 0,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 64,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 15,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 45,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0046,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 7,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 811,
            "combined_rank_score": 532.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 391.0,
            "sofascore_rating": 6.95,
            "sofascore_appearances": 6.0,
            "fifa_rank": 673.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7446,
            "source_file": "data/player_rankings.csv",
            "player_name": "Vanja Drkušić",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Chang-woo Park",
                  "ranking": 806
                },
                {
                  "player_name": "Ronan",
                  "ranking": 807
                },
                {
                  "player_name": "Roy Revivo",
                  "ranking": 808
                },
                {
                  "player_name": "Hugo Magallanes",
                  "ranking": 809
                },
                {
                  "player_name": "Dženis Burnić",
                  "ranking": 810
                }
              ],
              "lower": [
                {
                  "player_name": "Hugo Souza",
                  "ranking": 812
                },
                {
                  "player_name": "Teddy Teuma",
                  "ranking": 813
                },
                {
                  "player_name": "Yoel Bárcenas",
                  "ranking": 814
                },
                {
                  "player_name": "Piero Quispe",
                  "ranking": 815
                },
                {
                  "player_name": "Seung-wan Ryu",
                  "ranking": 816
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.576,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.576,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9945,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "minutes": 115.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0867
            },
            "rationale": "XGBoost regressor (D_service) evaluated 5 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Espanyol, 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.875,
                "tackles": 1.293,
                "tackles_won": 0.7307,
                "clearances": 4.875,
                "aerial_won": 1.6361,
                "total_shots": 0.3706,
                "rating": 6.7446,
                "minutes": 84.61,
                "total_pass": 38.6628,
                "accurate_pass": 30.4228,
                "duels_won": 3.8921,
                "total_long_balls": 8.0262,
                "accurate_long_balls": 2.0583,
                "total_own_half_passes": 29.3984,
                "accurate_own_half_passes": 26.2254,
                "total_opp_half_passes": 9.2643,
                "accurate_opp_half_passes": 4.1973,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 53.1118,
                "possession_lost": 9.3479,
                "dispossessed": 0.0,
                "duels_lost": 1.1234,
                "aerial_lost": 0.5617,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.8921,
                "challenges_lost": 0.0,
                "fouls": 0.5617,
                "fouls_drawn": 0.8426,
                "blocks": 2.0583,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.2148,
                "total_progression": 14.048,
                "progressive_carries": 0.3887,
                "key_pass": 0.0,
                "shots_off_target": 0.3706
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.1948,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 4.0701,
                  "aerialWon": 0.83,
                  "totalClearance_p90": 5.922,
                  "totalTackle": 1.674,
                  "totalPass": 26.4489
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8750203847885132,
                    "model_output": 0.875,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0998
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0825
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0578
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0209
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0204
                        }
                      ],
                      "others": 0.0073,
                      "total": 0.875,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.12204
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.101957
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.065678
                        },
                        {
                          "name": "touches",
                          "margin": -0.023285
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.023216
                        }
                      ],
                      "others_margin": 0.008366
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.2930269241333008,
                    "model_output": 1.293,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1802
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.1053
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0903
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0468
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0424
                        }
                      ],
                      "others": -0.0729,
                      "total": 1.293,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122275
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.06964
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.063848
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.034775
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.031525
                        }
                      ],
                      "others_margin": -0.054738
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7307349443435669,
                    "model_output": 0.7307,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1217
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0624
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0512
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0448
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0418
                        }
                      ],
                      "others": -0.1201,
                      "total": 0.7307,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.134443
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.066709
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.058295
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.053883
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.050432
                        }
                      ],
                      "others_margin": -0.152107
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.875007629394531,
                    "model_output": 4.875,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.406
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.4131
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2804
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2308
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.1903
                        }
                      ],
                      "others": 0.3033,
                      "total": 4.875,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.111808
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.10224
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.06389
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.049684
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.040792
                        }
                      ],
                      "others_margin": 0.064229
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.6361451148986816,
                    "model_output": 1.6361,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.2188
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1729
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.101
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0882
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0869
                        }
                      ],
                      "others": 0.2303,
                      "total": 1.6361,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.172993
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.139102
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.078902
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.069239
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.063778
                        }
                      ],
                      "others_margin": 0.15176
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.37064024806022644,
                    "model_output": 0.3706,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1056
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0432
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0203
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0145
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0115
                        }
                      ],
                      "others": -0.0918,
                      "total": 0.3706,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.10559
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.043159
                        },
                        {
                          "name": "rating",
                          "margin": 0.0203
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.014501
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.011516
                        }
                      ],
                      "others_margin": -0.091785
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7446064949035645,
                    "model_output": 6.7446,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0229
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0147
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0145
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0139
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0135
                        }
                      ],
                      "others": -0.0462,
                      "total": 6.7446,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.022926
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014714
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.014527
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.01385
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.013461
                        }
                      ],
                      "others_margin": -0.046337
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 5,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9945, quality 0.468)",
              "stats": {
                "interceptions": 0.8702,
                "tackles": 1.2859,
                "tackles_won": 0.7267,
                "clearances": 4.8482,
                "aerial_won": 1.6271,
                "total_shots": 0.3686,
                "rating": 6.7446,
                "minutes": 84.61,
                "total_pass": 38.4502,
                "accurate_pass": 30.2555,
                "duels_won": 3.8707,
                "total_long_balls": 7.9821,
                "accurate_long_balls": 2.047,
                "total_own_half_passes": 29.2367,
                "accurate_own_half_passes": 26.0812,
                "total_opp_half_passes": 9.2133,
                "accurate_opp_half_passes": 4.1742,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 52.8197,
                "possession_lost": 9.2965,
                "dispossessed": 0.0,
                "duels_lost": 1.1172,
                "aerial_lost": 0.5586,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.8817,
                "challenges_lost": 0.0,
                "fouls": 0.5586,
                "fouls_drawn": 0.838,
                "blocks": 2.047,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.1531,
                "total_progression": 13.9707,
                "progressive_carries": 0.3866,
                "key_pass": 0.0,
                "shots_off_target": 0.3686
              },
              "params": {
                "market_value_eur": 5500000,
                "quality_factor": 0.4683,
                "boost_factor": 0.9945,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0282)",
              "stats": {
                "interceptions": 0.8457,
                "tackles": 1.2859,
                "tackles_won": 0.747,
                "clearances": 4.8482,
                "aerial_won": 1.6271,
                "total_shots": 0.3582,
                "rating": 6.7446,
                "minutes": 84.61,
                "total_pass": 38.4502,
                "accurate_pass": 30.2555,
                "duels_won": 3.8707,
                "total_long_balls": 7.9821,
                "accurate_long_balls": 2.047,
                "total_own_half_passes": 29.2367,
                "accurate_own_half_passes": 26.0812,
                "total_opp_half_passes": 9.2133,
                "accurate_opp_half_passes": 4.1742,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 52.8197,
                "possession_lost": 9.2965,
                "dispossessed": 0.0,
                "duels_lost": 1.1172,
                "aerial_lost": 0.5586,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.8817,
                "challenges_lost": 0.0,
                "fouls": 0.604,
                "fouls_drawn": 0.8755,
                "blocks": 2.047,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.1531,
                "total_progression": 13.9707,
                "progressive_carries": 0.3866,
                "key_pass": 0.0,
                "shots_off_target": 0.3686
              },
              "params": {
                "blend_weight": 0.0282,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9401,
                "prior_reliability": 0.0867,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.5586,
                  "after": 0.604
                },
                {
                  "stat": "wasFouled",
                  "before": 0.838,
                  "after": 0.8755
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.8702,
                  "after": 0.8457
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7267,
                  "after": 0.747
                },
                {
                  "stat": "totalShots",
                  "before": 0.3686,
                  "after": 0.3582
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.8457,
                "tackles": 1.2859,
                "tackles_won": 0.747,
                "clearances": 4.8482,
                "aerial_won": 1.6271,
                "total_shots": 0.3686,
                "rating": 6.7446,
                "minutes": 84.61,
                "total_pass": 38.4502,
                "accurate_pass": 30.2555,
                "duels_won": 3.8707,
                "total_long_balls": 7.9821,
                "accurate_long_balls": 2.047,
                "total_own_half_passes": 29.2367,
                "accurate_own_half_passes": 26.0812,
                "total_opp_half_passes": 9.2133,
                "accurate_opp_half_passes": 4.1742,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 52.8197,
                "possession_lost": 9.2965,
                "dispossessed": 0.0,
                "duels_lost": 1.1172,
                "aerial_lost": 0.5586,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.8817,
                "challenges_lost": 0.0,
                "fouls": 0.604,
                "fouls_drawn": 0.8755,
                "blocks": 2.047,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.1531,
                "total_progression": 13.9707,
                "progressive_carries": 0.3866,
                "key_pass": 0.0,
                "shots_off_target": 0.3686
              },
              "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.8457,
                "tackles": 1.2859,
                "tackles_won": 0.747,
                "clearances": 4.8482,
                "aerial_won": 1.6271,
                "total_shots": 0.3686,
                "rating": 6.7446,
                "minutes": 84.61,
                "total_pass": 38.4502,
                "accurate_pass": 30.2555,
                "duels_won": 3.8707,
                "total_long_balls": 7.9821,
                "accurate_long_balls": 2.047,
                "total_own_half_passes": 29.2367,
                "accurate_own_half_passes": 26.0812,
                "total_opp_half_passes": 9.2133,
                "accurate_opp_half_passes": 4.1742,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 52.8197,
                "possession_lost": 9.2965,
                "dispossessed": 0.0,
                "duels_lost": 1.1172,
                "aerial_lost": 0.5586,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.8817,
                "challenges_lost": 0.0,
                "fouls": 0.604,
                "fouls_drawn": 0.8755,
                "blocks": 2.047,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.1531,
                "total_progression": 13.9707,
                "progressive_carries": 0.3866,
                "key_pass": 0.0,
                "shots_off_target": 0.3686,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.699,
                "opponent_faced": "Georges Mikautadze",
                "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": "Georges Mikautadze",
                  "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.8457,
                "tackles": 1.2859,
                "tackles_won": 0.747,
                "clearances": 4.8482,
                "aerial_won": 1.6271,
                "total_shots": 0.3686,
                "rating": 6.7446,
                "minutes": 84.61,
                "total_pass": 38.4502,
                "accurate_pass": 30.2555,
                "duels_won": 3.8707,
                "total_long_balls": 7.9821,
                "accurate_long_balls": 2.047,
                "total_own_half_passes": 29.2367,
                "accurate_own_half_passes": 26.0812,
                "total_opp_half_passes": 9.2133,
                "accurate_opp_half_passes": 4.1742,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 52.8197,
                "possession_lost": 9.2965,
                "dispossessed": 0.0,
                "duels_lost": 1.1172,
                "aerial_lost": 0.5586,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.8817,
                "challenges_lost": 0.0,
                "fouls": 0.604,
                "fouls_drawn": 0.8755,
                "blocks": 2.047,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.1531,
                "total_progression": 13.9707,
                "progressive_carries": 0.3866,
                "key_pass": 0.0,
                "shots_off_target": 0.3686,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.699,
                "opponent_faced": "Georges Mikautadze",
                "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.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "interceptions": 0.8457,
                "tackles": 1.2859,
                "tackles_won": 0.747,
                "clearances": 4.8482,
                "aerial_won": 1.6271,
                "total_shots": 0.3686,
                "rating": 6.7446,
                "minutes": 84.61,
                "total_pass": 38.4502,
                "accurate_pass": 30.2555,
                "duels_won": 3.8707,
                "total_long_balls": 7.9821,
                "accurate_long_balls": 2.047,
                "total_own_half_passes": 29.2367,
                "accurate_own_half_passes": 26.0812,
                "total_opp_half_passes": 9.2133,
                "accurate_opp_half_passes": 4.1742,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 52.8197,
                "possession_lost": 9.2965,
                "dispossessed": 0.0,
                "duels_lost": 1.1172,
                "aerial_lost": 0.5586,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.8817,
                "challenges_lost": 0.0,
                "fouls": 0.604,
                "fouls_drawn": 0.8755,
                "blocks": 2.047,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.1531,
                "total_progression": 13.9707,
                "progressive_carries": 0.3866,
                "key_pass": 0.0,
                "shots_off_target": 0.3686,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.699,
                "opponent_faced": "Georges Mikautadze",
                "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.0,
                "creation_factor": 0.9747
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "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 80.0)",
              "stats": {
                "interceptions": 0.8457,
                "tackles": 1.2859,
                "tackles_won": 0.747,
                "clearances": 4.8482,
                "aerial_won": 1.6271,
                "total_shots": 0.3686,
                "rating": 6.7446,
                "minutes": 84.61,
                "total_pass": 38.4502,
                "accurate_pass": 30.2555,
                "duels_won": 3.8707,
                "total_long_balls": 7.9821,
                "accurate_long_balls": 2.047,
                "total_own_half_passes": 29.2367,
                "accurate_own_half_passes": 26.0812,
                "total_opp_half_passes": 9.2133,
                "accurate_opp_half_passes": 4.1742,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 52.8197,
                "possession_lost": 9.2965,
                "dispossessed": 0.0,
                "duels_lost": 1.1172,
                "aerial_lost": 0.5586,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.8817,
                "challenges_lost": 0.0,
                "fouls": 0.604,
                "fouls_drawn": 0.8755,
                "blocks": 2.047,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.1531,
                "total_progression": 13.9707,
                "progressive_carries": 0.3866,
                "key_pass": 0.0,
                "shots_off_target": 0.3686,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.699,
                "opponent_faced": "Georges Mikautadze",
                "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.0,
                "creation_factor": 0.9747,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 10,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 811,
                "fifa_rank": 673.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.8457,
                "tackles": 1.2859,
                "tackles_won": 0.747,
                "clearances": 4.8482,
                "aerial_won": 1.6271,
                "total_shots": 0.3686,
                "rating": 6.7446,
                "minutes": 84.61,
                "total_pass": 38.4502,
                "accurate_pass": 30.2555,
                "duels_won": 3.8707,
                "total_long_balls": 7.9821,
                "accurate_long_balls": 2.047,
                "total_own_half_passes": 29.2367,
                "accurate_own_half_passes": 26.0812,
                "total_opp_half_passes": 9.2133,
                "accurate_opp_half_passes": 4.1742,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 52.8197,
                "possession_lost": 9.2965,
                "dispossessed": 0.0,
                "duels_lost": 1.1172,
                "aerial_lost": 0.5586,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.8817,
                "challenges_lost": 0.0,
                "fouls": 0.604,
                "fouls_drawn": 0.8755,
                "blocks": 2.047,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.1531,
                "total_progression": 13.9707,
                "progressive_carries": 0.3866,
                "key_pass": 0.0,
                "shots_off_target": 0.3686,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.699,
                "opponent_faced": "Georges Mikautadze",
                "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.0,
                "creation_factor": 0.9747,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "goal_rate": 0.0,
                "scorer_weight": 0.001,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0008,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.8457,
                "tackles": 1.2859,
                "tackles_won": 0.747,
                "clearances": 4.8482,
                "aerial_won": 1.6271,
                "total_shots": 0.3686,
                "rating": 6.7446,
                "minutes": 84.61,
                "total_pass": 38.4502,
                "accurate_pass": 30.2555,
                "duels_won": 3.8707,
                "total_long_balls": 7.9821,
                "accurate_long_balls": 2.047,
                "total_own_half_passes": 29.2367,
                "accurate_own_half_passes": 26.0812,
                "total_opp_half_passes": 9.2133,
                "accurate_opp_half_passes": 4.1742,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 52.8197,
                "possession_lost": 9.2965,
                "dispossessed": 0.0,
                "duels_lost": 1.1172,
                "aerial_lost": 0.5586,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.8817,
                "challenges_lost": 0.0,
                "fouls": 0.604,
                "fouls_drawn": 0.8755,
                "blocks": 2.047,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.1531,
                "total_progression": 13.9707,
                "progressive_carries": 0.3866,
                "key_pass": 0.0,
                "shots_off_target": 0.3686,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.699,
                "opponent_faced": "Georges Mikautadze",
                "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.0014,
                "finishing_factor": 1.0,
                "creation_factor": 0.9747,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0014,
                "assist_rate": 0.0,
                "provider_weight": 0.0014,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0015,
                "creation_factor": 0.9747,
                "appearance_weight": 1.0,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Omar El Hilali": {
          "player_id": 1064026,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 23,
          "height": 183,
          "market_value": 15900000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7922,
            "minutes": 89,
            "total_pass": 28,
            "accurate_pass": 22,
            "duels_won": 5,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 9,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 53,
            "possession_lost": 11.361,
            "dispossessed": 0.2684,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0778,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.1263,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 32,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 2.1,
            "tackles_won_in_zone": 1.7,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.578,
            "opponent_faced": "Tajon Buchanan",
            "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.1186,
            "finishing_factor": 1.0,
            "creation_factor": 0.8,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2252,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 34,
                "accurate_pass": 31,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 6,
                "aerial_won": 0,
                "duels_won": 3,
                "ball_recovery": 5,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 12,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.011,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 20,
                "tackles": 5,
                "tackles_won": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0217,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 16,
                "key_pass": 1,
                "clearances": 3,
                "aerial_won": 4,
                "duels_won": 7,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 8.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.7313,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 10,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 75,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0835,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 5,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0954,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 33,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0098,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 17,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 5,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0066,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 26,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083719,
              "match_date": "2026-05-23",
              "home_team": "Espanyol",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 11,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "tackles": 1,
                "clearances": 2,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3547,
            "combined_rank_score": 1516.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 622.0,
            "sofascore_rating": 6.7667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 2410.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7922,
            "source_file": "data/player_rankings.csv",
            "player_name": "Omar El Hilali",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sergio Camello",
                  "ranking": 3542
                },
                {
                  "player_name": "Mio Backhaus",
                  "ranking": 3543
                },
                {
                  "player_name": "Jindřich Staněk",
                  "ranking": 3544
                },
                {
                  "player_name": "Janis Blaswich",
                  "ranking": 3545
                },
                {
                  "player_name": "Jobe Bellingham",
                  "ranking": 3546
                }
              ],
              "lower": [
                {
                  "player_name": "Matt Turner",
                  "ranking": 3548
                },
                {
                  "player_name": "Jack Rudoni",
                  "ranking": 3549
                },
                {
                  "player_name": "Nemanja Matić",
                  "ranking": 3550
                },
                {
                  "player_name": "Reiss Nelson",
                  "ranking": 3551
                },
                {
                  "player_name": "Tolu Arokodare",
                  "ranking": 3552
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 45,
          "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": 45,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0025,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 270.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (D_service) evaluated 45 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Espanyol, rel: 0.20, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.0688,
                "tackles": 1.8105,
                "tackles_won": 1.2028,
                "clearances": 3.8344,
                "aerial_won": 1.2648,
                "total_shots": 0.4026,
                "rating": 6.7922,
                "minutes": 88.7,
                "total_pass": 27.6937,
                "accurate_pass": 22.436,
                "duels_won": 4.564,
                "total_long_balls": 3.7126,
                "accurate_long_balls": 1.9267,
                "total_own_half_passes": 14.8578,
                "accurate_own_half_passes": 13.0996,
                "total_opp_half_passes": 12.8359,
                "accurate_opp_half_passes": 9.3364,
                "crosses_total": 3.083,
                "crosses_accurate": 0.6786,
                "touches": 53.1375,
                "possession_lost": 11.3327,
                "dispossessed": 0.2677,
                "duels_lost": 3.4398,
                "aerial_lost": 0.9326,
                "total_contest": 0.5449,
                "won_contest": 0.3845,
                "ball_recovery": 2.7172,
                "challenges_lost": 0.3579,
                "fouls": 2.0484,
                "fouls_drawn": 0.7125,
                "blocks": 0.6915,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0786,
                "assist_rate": 0.0786,
                "expected_goals": 0.0,
                "expected_assists": 0.1146,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0987,
                "xgot": 0.0,
                "ball_carries": 10.2657,
                "total_progression": 32.2675,
                "progressive_carries": 1.1076,
                "key_pass": 0.4981,
                "shots_off_target": 0.4026
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Real Sociedad",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.8972,
                  "aerialWon": 1.2719,
                  "totalClearance_p90": 4.4501,
                  "totalTackle": 2.111,
                  "totalPass": 26.5496
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0688199996948242,
                    "model_output": 1.0688,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1156
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0517
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0176
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0137
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0108
                        }
                      ],
                      "others": 0.0261,
                      "total": 1.0688,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124962
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.051174
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.017182
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.013349
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.010402
                        }
                      ],
                      "others_margin": 0.024817
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.810481309890747,
                    "model_output": 1.8105,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1926
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1007
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0865
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0873
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0663
                        }
                      ],
                      "others": 0.024,
                      "total": 1.8105,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130149
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.061834
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.050231
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.048271
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.036426
                        }
                      ],
                      "others_margin": 0.013349
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.202828049659729,
                    "model_output": 1.2028,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1294
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0776
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.07
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0532
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.053
                        }
                      ],
                      "others": 0.0803,
                      "total": 1.2028,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.142386
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.0766
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.064381
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.048514
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.048321
                        }
                      ],
                      "others_margin": 0.069088
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.8344013690948486,
                    "model_output": 3.8344,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4734
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2254
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2145
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.1538
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.1305
                        }
                      ],
                      "others": -0.2263,
                      "total": 3.8344,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129227
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.056117
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.050632
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.03604
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.03164
                        }
                      ],
                      "others_margin": -0.057346
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.2647547721862793,
                    "model_output": 1.2648,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.173
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1456
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0688
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0476
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0394
                        }
                      ],
                      "others": -0.2412,
                      "total": 1.2648,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.134224
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.114112
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.049707
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.032977
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.026511
                        }
                      ],
                      "others_margin": -0.174562
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4026300311088562,
                    "model_output": 0.4026,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1258
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0486
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0338
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0104
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0101
                        }
                      ],
                      "others": -0.0322,
                      "total": 0.4026,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.125837
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.048551
                        },
                        {
                          "name": "rating",
                          "margin": 0.033839
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.010443
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.010084
                        }
                      ],
                      "others_margin": -0.032103
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.792153358459473,
                    "model_output": 6.7922,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0358
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0166
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0163
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0122
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.01
                        }
                      ],
                      "others": 0.016,
                      "total": 6.7922,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.035839
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.016555
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.016297
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.012167
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.01001
                        }
                      ],
                      "others_margin": 0.015828
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 45,
                  "role_matches": 41,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0025, quality 0.589)",
              "stats": {
                "interceptions": 1.0715,
                "tackles": 1.815,
                "tackles_won": 1.2058,
                "clearances": 3.844,
                "aerial_won": 1.2679,
                "total_shots": 0.4036,
                "rating": 6.7922,
                "minutes": 88.7,
                "total_pass": 27.7629,
                "accurate_pass": 22.4921,
                "duels_won": 4.5754,
                "total_long_balls": 3.7219,
                "accurate_long_balls": 1.9315,
                "total_own_half_passes": 14.8949,
                "accurate_own_half_passes": 13.1323,
                "total_opp_half_passes": 12.868,
                "accurate_opp_half_passes": 9.3597,
                "crosses_total": 3.0907,
                "crosses_accurate": 0.6803,
                "touches": 53.2703,
                "possession_lost": 11.361,
                "dispossessed": 0.2684,
                "duels_lost": 3.4484,
                "aerial_lost": 0.9349,
                "total_contest": 0.5463,
                "won_contest": 0.3855,
                "ball_recovery": 2.724,
                "challenges_lost": 0.3588,
                "fouls": 2.0535,
                "fouls_drawn": 0.7143,
                "blocks": 0.6932,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0788,
                "assist_rate": 0.0788,
                "expected_goals": 0.0,
                "expected_assists": 0.1149,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0989,
                "xgot": 0.0,
                "ball_carries": 10.2914,
                "total_progression": 32.3482,
                "progressive_carries": 1.1104,
                "key_pass": 0.4993,
                "shots_off_target": 0.4036
              },
              "params": {
                "market_value_eur": 15900000,
                "quality_factor": 0.5889,
                "boost_factor": 1.0025,
                "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.0130)",
              "stats": {
                "interceptions": 1.0747,
                "tackles": 1.815,
                "tackles_won": 1.1987,
                "clearances": 3.844,
                "aerial_won": 1.2679,
                "total_shots": 0.3984,
                "rating": 6.7922,
                "minutes": 88.7,
                "total_pass": 27.7629,
                "accurate_pass": 22.4921,
                "duels_won": 4.5754,
                "total_long_balls": 3.7219,
                "accurate_long_balls": 1.9315,
                "total_own_half_passes": 14.8949,
                "accurate_own_half_passes": 13.1323,
                "total_opp_half_passes": 12.868,
                "accurate_opp_half_passes": 9.3597,
                "crosses_total": 3.0975,
                "crosses_accurate": 0.6803,
                "touches": 53.2703,
                "possession_lost": 11.361,
                "dispossessed": 0.2684,
                "duels_lost": 3.4484,
                "aerial_lost": 0.9349,
                "total_contest": 0.5463,
                "won_contest": 0.3855,
                "ball_recovery": 2.724,
                "challenges_lost": 0.3588,
                "fouls": 2.0567,
                "fouls_drawn": 0.705,
                "blocks": 0.6932,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0778,
                "assist_rate": 0.0778,
                "expected_goals": 0.0,
                "expected_assists": 0.1149,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0989,
                "xgot": 0.0,
                "ball_carries": 10.2914,
                "total_progression": 32.3482,
                "progressive_carries": 1.1104,
                "key_pass": 0.4993,
                "shots_off_target": 0.4036
              },
              "params": {
                "blend_weight": 0.013,
                "history_matches": 45,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9856,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.7143,
                  "after": 0.705
                },
                {
                  "stat": "wonTackle",
                  "before": 1.2058,
                  "after": 1.1987
                },
                {
                  "stat": "totalCross",
                  "before": 3.0907,
                  "after": 3.0975
                },
                {
                  "stat": "totalShots",
                  "before": 0.4036,
                  "after": 0.3984
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0747,
                "tackles": 1.815,
                "tackles_won": 1.1987,
                "clearances": 3.844,
                "aerial_won": 1.2679,
                "total_shots": 0.4036,
                "rating": 6.7922,
                "minutes": 88.7,
                "total_pass": 27.7629,
                "accurate_pass": 22.4921,
                "duels_won": 4.5754,
                "total_long_balls": 3.7219,
                "accurate_long_balls": 1.9315,
                "total_own_half_passes": 14.8949,
                "accurate_own_half_passes": 13.1323,
                "total_opp_half_passes": 12.868,
                "accurate_opp_half_passes": 9.3597,
                "crosses_total": 3.0975,
                "crosses_accurate": 0.6803,
                "touches": 53.2703,
                "possession_lost": 11.361,
                "dispossessed": 0.2684,
                "duels_lost": 3.4484,
                "aerial_lost": 0.9349,
                "total_contest": 0.5463,
                "won_contest": 0.3855,
                "ball_recovery": 2.724,
                "challenges_lost": 0.3588,
                "fouls": 2.0567,
                "fouls_drawn": 0.705,
                "blocks": 0.6932,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0778,
                "assist_rate": 0.0778,
                "expected_goals": 0.0,
                "expected_assists": 0.1149,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0989,
                "xgot": 0.0,
                "ball_carries": 10.2914,
                "total_progression": 32.3482,
                "progressive_carries": 1.1104,
                "key_pass": 0.4993,
                "shots_off_target": 0.4036
              },
              "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.0747,
                "tackles": 1.815,
                "tackles_won": 1.1987,
                "clearances": 3.844,
                "aerial_won": 1.2679,
                "total_shots": 0.4036,
                "rating": 6.7922,
                "minutes": 88.7,
                "total_pass": 27.7629,
                "accurate_pass": 22.4921,
                "duels_won": 4.5754,
                "total_long_balls": 3.7219,
                "accurate_long_balls": 1.9315,
                "total_own_half_passes": 14.8949,
                "accurate_own_half_passes": 13.1323,
                "total_opp_half_passes": 12.868,
                "accurate_opp_half_passes": 9.3597,
                "crosses_total": 3.0975,
                "crosses_accurate": 0.6803,
                "touches": 53.2703,
                "possession_lost": 11.361,
                "dispossessed": 0.2684,
                "duels_lost": 3.4484,
                "aerial_lost": 0.9349,
                "total_contest": 0.5463,
                "won_contest": 0.3855,
                "ball_recovery": 2.724,
                "challenges_lost": 0.3588,
                "fouls": 2.0567,
                "fouls_drawn": 0.705,
                "blocks": 0.6932,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0778,
                "assist_rate": 0.0778,
                "expected_goals": 0.0,
                "expected_assists": 0.1149,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0989,
                "xgot": 0.0,
                "ball_carries": 10.2914,
                "total_progression": 32.3482,
                "progressive_carries": 1.1104,
                "key_pass": 0.4993,
                "shots_off_target": 0.4036,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.578,
                "opponent_faced": "Tajon Buchanan",
                "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": "Tajon Buchanan",
                  "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": 1.0747,
                "tackles": 1.815,
                "tackles_won": 1.1987,
                "clearances": 3.844,
                "aerial_won": 1.2679,
                "total_shots": 0.4036,
                "rating": 6.7922,
                "minutes": 88.7,
                "total_pass": 27.7629,
                "accurate_pass": 22.4921,
                "duels_won": 4.5754,
                "total_long_balls": 3.7219,
                "accurate_long_balls": 1.9315,
                "total_own_half_passes": 14.8949,
                "accurate_own_half_passes": 13.1323,
                "total_opp_half_passes": 12.868,
                "accurate_opp_half_passes": 9.3597,
                "crosses_total": 3.0975,
                "crosses_accurate": 0.6803,
                "touches": 53.2703,
                "possession_lost": 11.361,
                "dispossessed": 0.2684,
                "duels_lost": 3.4484,
                "aerial_lost": 0.9349,
                "total_contest": 0.5463,
                "won_contest": 0.3855,
                "ball_recovery": 2.724,
                "challenges_lost": 0.3588,
                "fouls": 2.0567,
                "fouls_drawn": 0.705,
                "blocks": 0.6932,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0778,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.1149,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0989,
                "xgot": 0.0,
                "ball_carries": 10.2914,
                "total_progression": 32.3482,
                "progressive_carries": 1.1104,
                "key_pass": 0.4993,
                "shots_off_target": 0.4036,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.578,
                "opponent_faced": "Tajon Buchanan",
                "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.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "interceptions": 1.0747,
                "tackles": 1.815,
                "tackles_won": 1.1987,
                "clearances": 3.844,
                "aerial_won": 1.2679,
                "total_shots": 0.4036,
                "rating": 6.7922,
                "minutes": 88.7,
                "total_pass": 27.7629,
                "accurate_pass": 22.4921,
                "duels_won": 4.5754,
                "total_long_balls": 3.7219,
                "accurate_long_balls": 1.9315,
                "total_own_half_passes": 14.8949,
                "accurate_own_half_passes": 13.1323,
                "total_opp_half_passes": 12.868,
                "accurate_opp_half_passes": 9.3597,
                "crosses_total": 3.0975,
                "crosses_accurate": 0.6803,
                "touches": 53.2703,
                "possession_lost": 11.361,
                "dispossessed": 0.2684,
                "duels_lost": 3.4484,
                "aerial_lost": 0.9349,
                "total_contest": 0.5463,
                "won_contest": 0.3855,
                "ball_recovery": 2.724,
                "challenges_lost": 0.3588,
                "fouls": 2.0567,
                "fouls_drawn": 0.705,
                "blocks": 0.6932,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0778,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.1263,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0989,
                "xgot": 0.0,
                "ball_carries": 10.2914,
                "total_progression": 32.3482,
                "progressive_carries": 1.1104,
                "key_pass": 0.4993,
                "shots_off_target": 0.4036,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.578,
                "opponent_faced": "Tajon Buchanan",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.1149,
                  "after": 0.1263
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 75.0)",
              "stats": {
                "interceptions": 1.0747,
                "tackles": 1.815,
                "tackles_won": 1.1987,
                "clearances": 3.844,
                "aerial_won": 1.2679,
                "total_shots": 0.4036,
                "rating": 6.7922,
                "minutes": 88.7,
                "total_pass": 27.7629,
                "accurate_pass": 22.4921,
                "duels_won": 4.5754,
                "total_long_balls": 3.7219,
                "accurate_long_balls": 1.9315,
                "total_own_half_passes": 14.8949,
                "accurate_own_half_passes": 13.1323,
                "total_opp_half_passes": 12.868,
                "accurate_opp_half_passes": 9.3597,
                "crosses_total": 3.0975,
                "crosses_accurate": 0.6803,
                "touches": 53.2703,
                "possession_lost": 11.361,
                "dispossessed": 0.2684,
                "duels_lost": 3.4484,
                "aerial_lost": 0.9349,
                "total_contest": 0.5463,
                "won_contest": 0.3855,
                "ball_recovery": 2.724,
                "challenges_lost": 0.3588,
                "fouls": 2.0567,
                "fouls_drawn": 0.705,
                "blocks": 0.6932,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0778,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.1263,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0989,
                "xgot": 0.0,
                "ball_carries": 10.2914,
                "total_progression": 32.3482,
                "progressive_carries": 1.1104,
                "key_pass": 0.4993,
                "shots_off_target": 0.4036,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.578,
                "opponent_faced": "Tajon Buchanan",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 6,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3547,
                "fifa_rank": 2410.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.0747,
                "tackles": 1.815,
                "tackles_won": 1.1987,
                "clearances": 3.844,
                "aerial_won": 1.2679,
                "total_shots": 0.4036,
                "rating": 6.7922,
                "minutes": 88.7,
                "total_pass": 27.7629,
                "accurate_pass": 22.4921,
                "duels_won": 4.5754,
                "total_long_balls": 3.7219,
                "accurate_long_balls": 1.9315,
                "total_own_half_passes": 14.8949,
                "accurate_own_half_passes": 13.1323,
                "total_opp_half_passes": 12.868,
                "accurate_opp_half_passes": 9.3597,
                "crosses_total": 3.0975,
                "crosses_accurate": 0.6803,
                "touches": 53.2703,
                "possession_lost": 11.361,
                "dispossessed": 0.2684,
                "duels_lost": 3.4484,
                "aerial_lost": 0.9349,
                "total_contest": 0.5463,
                "won_contest": 0.3855,
                "ball_recovery": 2.724,
                "challenges_lost": 0.3588,
                "fouls": 2.0567,
                "fouls_drawn": 0.705,
                "blocks": 0.6932,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0778,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.1263,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0989,
                "xgot": 0.0,
                "ball_carries": 10.2914,
                "total_progression": 32.3482,
                "progressive_carries": 1.1104,
                "key_pass": 0.4993,
                "shots_off_target": 0.4036,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.578,
                "opponent_faced": "Tajon Buchanan",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "goal_rate": 0.0,
                "scorer_weight": 0.001,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0008,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.0747,
                "tackles": 1.815,
                "tackles_won": 1.1987,
                "clearances": 3.844,
                "aerial_won": 1.2679,
                "total_shots": 0.4036,
                "rating": 6.7922,
                "minutes": 88.7,
                "total_pass": 27.7629,
                "accurate_pass": 22.4921,
                "duels_won": 4.5754,
                "total_long_balls": 3.7219,
                "accurate_long_balls": 1.9315,
                "total_own_half_passes": 14.8949,
                "accurate_own_half_passes": 13.1323,
                "total_opp_half_passes": 12.868,
                "accurate_opp_half_passes": 9.3597,
                "crosses_total": 3.0975,
                "crosses_accurate": 0.6803,
                "touches": 53.2703,
                "possession_lost": 11.361,
                "dispossessed": 0.2684,
                "duels_lost": 3.4484,
                "aerial_lost": 0.9349,
                "total_contest": 0.5463,
                "won_contest": 0.3855,
                "ball_recovery": 2.724,
                "challenges_lost": 0.3588,
                "fouls": 2.0567,
                "fouls_drawn": 0.705,
                "blocks": 0.6932,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0778,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.1263,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0989,
                "xgot": 0.0,
                "ball_carries": 10.2914,
                "total_progression": 32.3482,
                "progressive_carries": 1.1104,
                "key_pass": 0.4993,
                "shots_off_target": 0.4036,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.578,
                "opponent_faced": "Tajon Buchanan",
                "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.1186,
                "finishing_factor": 1.0,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1186,
                "assist_rate": 0.0778,
                "provider_weight": 0.101,
                "squad_weight_total": 0.9085,
                "weight_share": 0.1112,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Ángel Fortuño": {
          "player_id": 1082734,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 183,
          "market_value": 290000,
          "stats": {
            "saves": 3,
            "goals_prevented": 0.0768,
            "rating": 7.1717,
            "minutes": 90,
            "total_pass": 28,
            "accurate_pass": 15,
            "total_long_balls": 20,
            "accurate_long_balls": 7,
            "touches": 46,
            "clearances": 1,
            "ball_recovery": 12,
            "high_claims": 2,
            "punches": 0.0,
            "aerial_won": 0,
            "sweeper_actions": 2,
            "sweeper_accurate": 2,
            "saves_inside_box": 3,
            "possession_lost": 13.5312,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 10,
            "gk_engine_opponent_lambda": 2.046,
            "shots_faced": 17.6,
            "expected_saves": 4.31,
            "high_pressure_saves": 1.48,
            "opponent_faced": "Georges Mikautadze, Alberto Moleiro",
            "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": 89.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0043,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 22,
                "accurate_pass": 11,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 2,
                "aerial_won": 0,
                "duels_won": 1,
                "ball_recovery": 11,
                "saves": 7,
                "goals_prevented": 0.6351
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0044,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 19,
                "ball_recovery": 10,
                "saves": 5,
                "goals_prevented": 0.6995
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 11,
                "clearances": 1,
                "ball_recovery": 17,
                "saves": 6,
                "goals_prevented": -0.3329
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083719,
              "match_date": "2026-05-23",
              "home_team": "Espanyol",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 21,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 10,
                "saves": 2,
                "goals_prevented": 0.2618
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 24,
            "combined_rank_score": 25.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 35.0,
            "sofascore_rating": 7.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 15.0,
            "fifa_overall": 89.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.1717,
            "source_file": "data/player_rankings.csv",
            "player_name": "Angel Fortuno",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gustavo Henrique",
                  "ranking": 19
                },
                {
                  "player_name": "Alejandro Grimaldo",
                  "ranking": 20
                },
                {
                  "player_name": "Marc Bartra",
                  "ranking": 21
                },
                {
                  "player_name": "Khvicha Kvaratskhelia",
                  "ranking": 22
                },
                {
                  "player_name": "Danijel Petković",
                  "ranking": 23
                }
              ],
              "lower": [
                {
                  "player_name": "Hyun-woo Cho",
                  "ranking": 25
                },
                {
                  "player_name": "Joshua Kimmich",
                  "ranking": 26
                },
                {
                  "player_name": "Ljupche Doriev",
                  "ranking": 27
                },
                {
                  "player_name": "Rafael Romo",
                  "ranking": 28
                },
                {
                  "player_name": "Michael Olise",
                  "ranking": 29
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.5,
          "history_matches": 4,
          "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": 4,
            "data_confidence": 0.5,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9887,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (G_service) evaluated 4 historical appearances across 3 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 3.42,
                "goals_prevented": 0.0777,
                "rating": 7.1717,
                "minutes": 90.0,
                "total_pass": 28.0477,
                "accurate_pass": 15.0611,
                "total_long_balls": 20.1997,
                "accurate_long_balls": 7.2131,
                "touches": 47.0032,
                "clearances": 0.8544,
                "ball_recovery": 11.9009,
                "high_claims": 2.1373,
                "punches": 0.0,
                "aerial_won": 0.3854,
                "sweeper_actions": 1.6146,
                "sweeper_accurate": 1.6146,
                "saves_inside_box": 3.1682,
                "possession_lost": 13.6858,
                "duels_won": 0.6993,
                "duels_lost": 0.0,
                "total_contest": 0.3138,
                "won_contest": 0.3138,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.7554,
                "accurate_own_half_passes": 10.4076
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-30T10:03:31.159511+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 201,
                    "rows": 7335
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3138,
                    "rating": 8.4
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2667,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2267,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1927,
                    "rating": 7.9
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 1.0,
                  "sweeper_actions_p90": 1.6146,
                  "accurateOwnHalfPasses": 10.4076,
                  "totalLongBalls": 20.1997,
                  "commanding_index": 2.5227,
                  "accurateKeeperSweeper": 1.6146,
                  "distribution_accuracy": 0.7984
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 3.419983386993408,
                    "model_output": 3.42,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0453
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0393
                      },
                      {
                        "name": "save_contribution",
                        "importance": 0.038
                      },
                      {
                        "name": "saves",
                        "importance": 0.0361
                      },
                      {
                        "name": "commanding_index",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 2.9243,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.1121
                        },
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "contribution": 0.0658
                        },
                        {
                          "name": "commanding_index",
                          "contribution": 0.0588
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.0382
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0346
                        }
                      ],
                      "others": 0.1862,
                      "total": 3.42,
                      "log_link": true,
                      "margin_base": 1.07304,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.037603
                        },
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "margin": 0.021436
                        },
                        {
                          "name": "commanding_index",
                          "margin": 0.018773
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": 0.011999
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.01077
                        }
                      ],
                      "others_margin": 0.056014
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.0776582807302475,
                    "model_output": 0.0777,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0462
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0392
                      },
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0391
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0381
                      },
                      {
                        "name": "punches",
                        "importance": 0.0369
                      }
                    ],
                    "decomposition": {
                      "base": -0.0231,
                      "items": [
                        {
                          "name": "sweeper_accuracy",
                          "contribution": 0.0587
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0219
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": 0.0202
                        },
                        {
                          "name": "punches",
                          "contribution": 0.0197
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": -0.0183
                        }
                      ],
                      "others": -0.0014,
                      "total": 0.0777,
                      "log_link": false,
                      "margin_base": -0.023055,
                      "item_margins": [
                        {
                          "name": "sweeper_accuracy",
                          "margin": 0.058695
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.021916
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": 0.020179
                        },
                        {
                          "name": "punches",
                          "margin": 0.019672
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": -0.018266
                        }
                      ],
                      "others_margin": -0.001484
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.1717119216918945,
                    "model_output": 7.1717,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalLongBalls",
                        "importance": 0.039
                      },
                      {
                        "name": "accurateKeeperSweeper",
                        "importance": 0.0364
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.036
                      },
                      {
                        "name": "totalKeeperSweeper",
                        "importance": 0.0357
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0356
                      }
                    ],
                    "decomposition": {
                      "base": 6.9903,
                      "items": [
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "contribution": 0.0427
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0421
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": -0.0339
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.0338
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": 0.0304
                        }
                      ],
                      "others": 0.1339,
                      "total": 7.1717,
                      "log_link": false,
                      "margin_base": 6.99032,
                      "item_margins": [
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "margin": 0.04274
                        },
                        {
                          "name": "rating",
                          "margin": 0.042134
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": -0.0339
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": -0.033813
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": 0.03042
                        }
                      ],
                      "others_margin": 0.133809
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 4,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9887, quality 0.437)",
              "stats": {
                "saves": 3.3813,
                "goals_prevented": 0.0768,
                "rating": 7.1717,
                "minutes": 90.0,
                "total_pass": 27.7308,
                "accurate_pass": 14.8909,
                "total_long_balls": 19.9714,
                "accurate_long_balls": 7.1316,
                "touches": 46.4721,
                "clearances": 0.8447,
                "ball_recovery": 11.7664,
                "high_claims": 2.1131,
                "punches": 0.0,
                "aerial_won": 0.381,
                "sweeper_actions": 1.5964,
                "sweeper_accurate": 1.5964,
                "saves_inside_box": 3.1324,
                "possession_lost": 13.5312,
                "duels_won": 0.6914,
                "duels_lost": 0.0,
                "total_contest": 0.3103,
                "won_contest": 0.3103,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6113,
                "accurate_own_half_passes": 10.29
              },
              "params": {
                "market_value_eur": 290000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9887,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 3.3813,
                "goals_prevented": 0.0768,
                "rating": 7.1717,
                "minutes": 90.0,
                "total_pass": 27.7308,
                "accurate_pass": 14.8909,
                "total_long_balls": 19.9714,
                "accurate_long_balls": 7.1316,
                "touches": 46.4721,
                "clearances": 0.8447,
                "ball_recovery": 11.7664,
                "high_claims": 2.1131,
                "punches": 0.0,
                "aerial_won": 0.381,
                "sweeper_actions": 1.5964,
                "sweeper_accurate": 1.5964,
                "saves_inside_box": 3.1324,
                "possession_lost": 13.5312,
                "duels_won": 0.6914,
                "duels_lost": 0.0,
                "total_contest": 0.3103,
                "won_contest": 0.3103,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6113,
                "accurate_own_half_passes": 10.29
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "saves": 3.3813,
                "goals_prevented": 0.0768,
                "rating": 7.1717,
                "minutes": 90.0,
                "total_pass": 27.7308,
                "accurate_pass": 14.8909,
                "total_long_balls": 19.9714,
                "accurate_long_balls": 7.1316,
                "touches": 46.4721,
                "clearances": 0.8447,
                "ball_recovery": 11.7664,
                "high_claims": 2.1131,
                "punches": 0.0,
                "aerial_won": 0.381,
                "sweeper_actions": 1.5964,
                "sweeper_accurate": 1.5964,
                "saves_inside_box": 3.1324,
                "possession_lost": 13.5312,
                "duels_won": 0.6914,
                "duels_lost": 0.0,
                "total_contest": 0.3103,
                "won_contest": 0.3103,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6113,
                "accurate_own_half_passes": 10.29,
                "gk_engine_opponent_lambda": 2.046,
                "shots_faced": 19.4,
                "expected_saves": 4.74,
                "high_pressure_saves": 1.64,
                "opponent_faced": "Georges Mikautadze, Alberto Moleiro",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Georges Mikautadze, Alberto Moleiro",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 2.046
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "saves": 3.3813,
                "goals_prevented": 0.0768,
                "rating": 7.1717,
                "minutes": 90.0,
                "total_pass": 27.7308,
                "accurate_pass": 14.8909,
                "total_long_balls": 19.9714,
                "accurate_long_balls": 7.1316,
                "touches": 46.4721,
                "clearances": 0.8447,
                "ball_recovery": 11.7664,
                "high_claims": 2.1131,
                "punches": 0.0,
                "aerial_won": 0.381,
                "sweeper_actions": 1.5964,
                "sweeper_accurate": 1.5964,
                "saves_inside_box": 3.1324,
                "possession_lost": 13.5312,
                "duels_won": 0.6914,
                "duels_lost": 0.0,
                "total_contest": 0.3103,
                "won_contest": 0.3103,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6113,
                "accurate_own_half_passes": 10.29,
                "gk_engine_opponent_lambda": 2.046,
                "shots_faced": 19.4,
                "expected_saves": 4.74,
                "high_pressure_saves": 1.64,
                "opponent_faced": "Georges Mikautadze, Alberto Moleiro",
                "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.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "saves": 3.3813,
                "goals_prevented": 0.0768,
                "rating": 7.1717,
                "minutes": 90.0,
                "total_pass": 27.7308,
                "accurate_pass": 14.8909,
                "total_long_balls": 19.9714,
                "accurate_long_balls": 7.1316,
                "touches": 46.4721,
                "clearances": 0.8447,
                "ball_recovery": 11.7664,
                "high_claims": 2.1131,
                "punches": 0.0,
                "aerial_won": 0.381,
                "sweeper_actions": 1.5964,
                "sweeper_accurate": 1.5964,
                "saves_inside_box": 3.1324,
                "possession_lost": 13.5312,
                "duels_won": 0.6914,
                "duels_lost": 0.0,
                "total_contest": 0.3103,
                "won_contest": 0.3103,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6113,
                "accurate_own_half_passes": 10.29,
                "gk_engine_opponent_lambda": 2.046,
                "shots_faced": 17.6,
                "expected_saves": 4.31,
                "high_pressure_saves": 1.48,
                "opponent_faced": "Georges Mikautadze, Alberto Moleiro",
                "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.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 19.4,
                  "after": 17.6
                },
                {
                  "stat": "expected_saves",
                  "before": 4.74,
                  "after": 4.31
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 1.64,
                  "after": 1.48
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 89.0)",
              "stats": {
                "saves": 3.3813,
                "goals_prevented": 0.0768,
                "rating": 7.1717,
                "minutes": 90.0,
                "total_pass": 27.7308,
                "accurate_pass": 14.8909,
                "total_long_balls": 19.9714,
                "accurate_long_balls": 7.1316,
                "touches": 46.4721,
                "clearances": 0.8447,
                "ball_recovery": 11.7664,
                "high_claims": 2.1131,
                "punches": 0.0,
                "aerial_won": 0.381,
                "sweeper_actions": 1.5964,
                "sweeper_accurate": 1.5964,
                "saves_inside_box": 3.1324,
                "possession_lost": 13.5312,
                "duels_won": 0.6914,
                "duels_lost": 0.0,
                "total_contest": 0.3103,
                "won_contest": 0.3103,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6113,
                "accurate_own_half_passes": 10.29,
                "gk_engine_opponent_lambda": 2.046,
                "shots_faced": 17.6,
                "expected_saves": 4.31,
                "high_pressure_saves": 1.48,
                "opponent_faced": "Georges Mikautadze, Alberto Moleiro",
                "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": 89.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 24,
                "fifa_rank": 15.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 89.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "saves": 3.3813,
                "goals_prevented": 0.0768,
                "rating": 7.1717,
                "minutes": 90.0,
                "total_pass": 27.7308,
                "accurate_pass": 14.8909,
                "total_long_balls": 19.9714,
                "accurate_long_balls": 7.1316,
                "touches": 46.4721,
                "clearances": 0.8447,
                "ball_recovery": 11.7664,
                "high_claims": 2.1131,
                "punches": 0.0,
                "aerial_won": 0.381,
                "sweeper_actions": 1.5964,
                "sweeper_accurate": 1.5964,
                "saves_inside_box": 3.1324,
                "possession_lost": 13.5312,
                "duels_won": 0.6914,
                "duels_lost": 0.0,
                "total_contest": 0.3103,
                "won_contest": 0.3103,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6113,
                "accurate_own_half_passes": 10.29,
                "gk_engine_opponent_lambda": 2.046,
                "shots_faced": 17.6,
                "expected_saves": 4.31,
                "high_pressure_saves": 1.48,
                "opponent_faced": "Georges Mikautadze, Alberto Moleiro",
                "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": 89.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "saves": 3.3813,
                "goals_prevented": 0.0768,
                "rating": 7.1717,
                "minutes": 90.0,
                "total_pass": 27.7308,
                "accurate_pass": 14.8909,
                "total_long_balls": 19.9714,
                "accurate_long_balls": 7.1316,
                "touches": 46.4721,
                "clearances": 0.8447,
                "ball_recovery": 11.7664,
                "high_claims": 2.1131,
                "punches": 0.0,
                "aerial_won": 0.381,
                "sweeper_actions": 1.5964,
                "sweeper_accurate": 1.5964,
                "saves_inside_box": 3.1324,
                "possession_lost": 13.5312,
                "duels_won": 0.6914,
                "duels_lost": 0.0,
                "total_contest": 0.3103,
                "won_contest": 0.3103,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6113,
                "accurate_own_half_passes": 10.29,
                "gk_engine_opponent_lambda": 2.046,
                "shots_faced": 17.6,
                "expected_saves": 4.31,
                "high_pressure_saves": 1.48,
                "opponent_faced": "Georges Mikautadze, Alberto Moleiro",
                "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": 89.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Marko Dmitrović": {
          "player_id": 94527,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 13,
          "height": 194,
          "market_value": 650000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0006,
            "rating": 7.0561,
            "minutes": 4,
            "total_pass": 4,
            "accurate_pass": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "touches": 6,
            "clearances": 0,
            "ball_recovery": 2,
            "high_claims": 0,
            "punches": 0.095,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 1.4224,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "bench_appearance_probability": 0.131,
            "bench_expected_minutes": 4.39,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 1.95,
            "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": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 5.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 22,
                "clearances": 1,
                "ball_recovery": 10,
                "saves": 3,
                "goals_prevented": -0.9473
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 19,
                "clearances": 3,
                "ball_recovery": 8,
                "goals_prevented": -1.0696
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 16,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 15,
                "saves": 4,
                "goals_prevented": 0.5262
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 22,
                "duels_won": 1,
                "ball_recovery": 18,
                "saves": 2,
                "goals_prevented": -0.0954
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 16,
                "interceptions": 1,
                "ball_recovery": 9,
                "saves": 7,
                "goals_prevented": 1.0653
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 9,
                "clearances": 1,
                "ball_recovery": 8,
                "saves": 6,
                "goals_prevented": -0.0185
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 14,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0043,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 8,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 13,
                "saves": 6,
                "goals_prevented": -0.3181
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083629,
              "match_date": "2026-05-13",
              "home_team": "Espanyol",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 8.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0031,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 21,
                "ball_recovery": 11,
                "saves": 4,
                "goals_prevented": 1.7533
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083587,
              "match_date": "2026-05-09",
              "home_team": "Sevilla",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 9,
                "clearances": 1,
                "ball_recovery": 14,
                "saves": 4,
                "goals_prevented": -0.7879
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1310,
            "combined_rank_score": 568.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 180.0,
            "sofascore_rating": 7.2333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 957.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0561,
            "source_file": "data/player_rankings.csv",
            "player_name": "Marko Dmitrović",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mario Gila",
                  "ranking": 1305
                },
                {
                  "player_name": "Son Heung Min",
                  "ranking": 1306
                },
                {
                  "player_name": "Bazoumana Touré",
                  "ranking": 1307
                },
                {
                  "player_name": "Emil Audero",
                  "ranking": 1308
                },
                {
                  "player_name": "Lukáš Haraslín",
                  "ranking": 1309
                }
              ],
              "lower": [
                {
                  "player_name": "Tino Livramento",
                  "ranking": 1311
                },
                {
                  "player_name": "Yéremy Pino",
                  "ranking": 1312
                },
                {
                  "player_name": "Cecilio Waterman",
                  "ranking": 1313
                },
                {
                  "player_name": "Javier Guerra",
                  "ranking": 1314
                },
                {
                  "player_name": "Pedro Gonçalves",
                  "ranking": 1315
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 44,
          "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": 44,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 4.392222187561249,
            "bench_appearance_prob": 0.131,
            "market_value_adjustment": 0.9979,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "Bench projection scaled from XGBoost G_service (44 historical appearances) to 4.4 expected mins (appearance prob 0.13); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.6742,
                "goals_prevented": 0.0042,
                "rating": 7.0561,
                "minutes": 28.5,
                "total_pass": 25.5859,
                "accurate_pass": 16.4781,
                "total_long_balls": 14.4926,
                "accurate_long_balls": 5.4232,
                "touches": 38.9317,
                "clearances": 1.0705,
                "ball_recovery": 10.9523,
                "high_claims": 1.8074,
                "punches": 0.6176,
                "aerial_won": 0.2246,
                "sweeper_actions": 1.6054,
                "sweeper_accurate": 1.4353,
                "saves_inside_box": 2.0161,
                "possession_lost": 9.2489,
                "duels_won": 0.3388,
                "duels_lost": 0.2334,
                "total_contest": 0.0922,
                "won_contest": 0.0922,
                "fouls": 0.0,
                "fouls_drawn": 0.1592,
                "total_own_half_passes": 14.6673,
                "accurate_own_half_passes": 13.3167
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-30T10:03:31.159511+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 201,
                    "rows": 7335
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 5.5
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 8.9
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 5.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "sweeper_actions_p90": 1.4299,
                  "accurateOwnHalfPasses": 13.3167,
                  "totalLongBalls": 14.4926,
                  "commanding_index": 1.8494,
                  "accurateKeeperSweeper": 1.4434,
                  "distribution_accuracy": 0.8664
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.6742160320281982,
                    "model_output": 2.6742,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0453
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0393
                      },
                      {
                        "name": "save_contribution",
                        "importance": 0.038
                      },
                      {
                        "name": "saves",
                        "importance": 0.0361
                      },
                      {
                        "name": "commanding_index",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 2.9243,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.25
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0305
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0264
                        },
                        {
                          "name": "commanding_index",
                          "contribution": -0.0252
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": 0.0226
                        }
                      ],
                      "others": -0.0016,
                      "total": 2.6742,
                      "log_link": true,
                      "margin_base": 1.07304,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.089362
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.011353
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.009813
                        },
                        {
                          "name": "commanding_index",
                          "margin": -0.009439
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": 0.008471
                        }
                      ],
                      "others_margin": -0.000593
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.004193077329546213,
                    "model_output": 0.0042,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0462
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0392
                      },
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0391
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0381
                      },
                      {
                        "name": "punches",
                        "importance": 0.0369
                      }
                    ],
                    "decomposition": {
                      "base": -0.0231,
                      "items": [
                        {
                          "name": "sweeper_accuracy",
                          "contribution": 0.0317
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": 0.0126
                        },
                        {
                          "name": "commanding_index",
                          "contribution": -0.0118
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.0109
                        },
                        {
                          "name": "totalKeeperSweeper",
                          "contribution": 0.0103
                        }
                      ],
                      "others": -0.0264,
                      "total": 0.0042,
                      "log_link": false,
                      "margin_base": -0.023055,
                      "item_margins": [
                        {
                          "name": "sweeper_accuracy",
                          "margin": 0.031734
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": 0.012612
                        },
                        {
                          "name": "commanding_index",
                          "margin": -0.011762
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": 0.010872
                        },
                        {
                          "name": "totalKeeperSweeper",
                          "margin": 0.010268
                        }
                      ],
                      "others_margin": -0.026476
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.056057453155518,
                    "model_output": 7.0561,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalLongBalls",
                        "importance": 0.039
                      },
                      {
                        "name": "accurateKeeperSweeper",
                        "importance": 0.0364
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.036
                      },
                      {
                        "name": "totalKeeperSweeper",
                        "importance": 0.0357
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0356
                      }
                    ],
                    "decomposition": {
                      "base": 6.9903,
                      "items": [
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0326
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.018
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": 0.0161
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.015
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": 0.014
                        }
                      ],
                      "others": 0.0061,
                      "total": 7.0561,
                      "log_link": false,
                      "margin_base": 6.99032,
                      "item_margins": [
                        {
                          "name": "ballRecovery",
                          "margin": 0.032565
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": -0.018042
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": 0.016094
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.015007
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": 0.01397
                        }
                      ],
                      "others_margin": 0.006146
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 44,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9979, quality 0.437)",
              "stats": {
                "saves": 2.6686,
                "goals_prevented": 0.0042,
                "rating": 7.0561,
                "minutes": 28.5,
                "total_pass": 25.5322,
                "accurate_pass": 16.4435,
                "total_long_balls": 14.4622,
                "accurate_long_balls": 5.4118,
                "touches": 38.8499,
                "clearances": 1.0683,
                "ball_recovery": 10.9293,
                "high_claims": 1.8036,
                "punches": 0.6163,
                "aerial_won": 0.2241,
                "sweeper_actions": 1.602,
                "sweeper_accurate": 1.4323,
                "saves_inside_box": 2.0119,
                "possession_lost": 9.2295,
                "duels_won": 0.3381,
                "duels_lost": 0.2329,
                "total_contest": 0.092,
                "won_contest": 0.092,
                "fouls": 0.0,
                "fouls_drawn": 0.1589,
                "total_own_half_passes": 14.6365,
                "accurate_own_half_passes": 13.2887
              },
              "params": {
                "market_value_eur": 650000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9979,
                "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.0133)",
              "stats": {
                "saves": 2.6514,
                "goals_prevented": 0.0042,
                "rating": 7.0561,
                "minutes": 28.5,
                "total_pass": 25.5322,
                "accurate_pass": 16.4435,
                "total_long_balls": 14.4622,
                "accurate_long_balls": 5.4118,
                "touches": 38.8499,
                "clearances": 1.0683,
                "ball_recovery": 10.9293,
                "high_claims": 1.8036,
                "punches": 0.6163,
                "aerial_won": 0.2241,
                "sweeper_actions": 1.602,
                "sweeper_accurate": 1.4323,
                "saves_inside_box": 2.0119,
                "possession_lost": 9.2295,
                "duels_won": 0.3381,
                "duels_lost": 0.2329,
                "total_contest": 0.092,
                "won_contest": 0.092,
                "fouls": 0.0,
                "fouls_drawn": 0.1568,
                "total_own_half_passes": 14.6365,
                "accurate_own_half_passes": 13.2887
              },
              "params": {
                "blend_weight": 0.0133,
                "history_matches": 44,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.3167,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 2.6686,
                  "after": 2.6514
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 28.5 to 4.4 expected minutes (appearance prob 0.13)",
              "stats": {
                "saves": 0.4086,
                "goals_prevented": 0.0006,
                "rating": 7.0561,
                "minutes": 4.39,
                "total_pass": 3.9348,
                "accurate_pass": 2.5342,
                "total_long_balls": 2.2288,
                "accurate_long_balls": 0.834,
                "touches": 5.9873,
                "clearances": 0.1646,
                "ball_recovery": 1.6843,
                "high_claims": 0.278,
                "punches": 0.095,
                "aerial_won": 0.0345,
                "sweeper_actions": 0.2469,
                "sweeper_accurate": 0.2207,
                "saves_inside_box": 0.3101,
                "possession_lost": 1.4224,
                "duels_won": 0.0521,
                "duels_lost": 0.0359,
                "total_contest": 0.0142,
                "won_contest": 0.0142,
                "fouls": 0.0,
                "fouls_drawn": 0.0242,
                "total_own_half_passes": 2.2557,
                "accurate_own_half_passes": 2.048,
                "bench_appearance_probability": 0.131,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "expected_minutes": 4.39,
                "projection_minutes": 28.5,
                "minutes_scale": 0.1541,
                "appearance_probability": 0.131
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.4086,
                "goals_prevented": 0.0006,
                "rating": 7.0561,
                "minutes": 4.39,
                "total_pass": 3.9348,
                "accurate_pass": 2.5342,
                "total_long_balls": 2.2288,
                "accurate_long_balls": 0.834,
                "touches": 5.9873,
                "clearances": 0.1646,
                "ball_recovery": 1.6843,
                "high_claims": 0.278,
                "punches": 0.095,
                "aerial_won": 0.0345,
                "sweeper_actions": 0.2469,
                "sweeper_accurate": 0.2207,
                "saves_inside_box": 0.3101,
                "possession_lost": 1.4224,
                "duels_won": 0.0521,
                "duels_lost": 0.0359,
                "total_contest": 0.0142,
                "won_contest": 0.0142,
                "fouls": 0.0,
                "fouls_drawn": 0.0242,
                "total_own_half_passes": 2.2557,
                "accurate_own_half_passes": 2.048,
                "bench_appearance_probability": 0.131,
                "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.4086,
                "goals_prevented": 0.0006,
                "rating": 7.0561,
                "minutes": 4.39,
                "total_pass": 3.9348,
                "accurate_pass": 2.5342,
                "total_long_balls": 2.2288,
                "accurate_long_balls": 0.834,
                "touches": 5.9873,
                "clearances": 0.1646,
                "ball_recovery": 1.6843,
                "high_claims": 0.278,
                "punches": 0.095,
                "aerial_won": 0.0345,
                "sweeper_actions": 0.2469,
                "sweeper_accurate": 0.2207,
                "saves_inside_box": 0.3101,
                "possession_lost": 1.4224,
                "duels_won": 0.0521,
                "duels_lost": 0.0359,
                "total_contest": 0.0142,
                "won_contest": 0.0142,
                "fouls": 0.0,
                "fouls_drawn": 0.0242,
                "total_own_half_passes": 2.2557,
                "accurate_own_half_passes": 2.048,
                "bench_appearance_probability": 0.131,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.131,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 79.0)",
              "stats": {
                "saves": 0.4086,
                "goals_prevented": 0.0006,
                "rating": 7.0561,
                "minutes": 4.39,
                "total_pass": 3.9348,
                "accurate_pass": 2.5342,
                "total_long_balls": 2.2288,
                "accurate_long_balls": 0.834,
                "touches": 5.9873,
                "clearances": 0.1646,
                "ball_recovery": 1.6843,
                "high_claims": 0.278,
                "punches": 0.095,
                "aerial_won": 0.0345,
                "sweeper_actions": 0.2469,
                "sweeper_accurate": 0.2207,
                "saves_inside_box": 0.3101,
                "possession_lost": 1.4224,
                "duels_won": 0.0521,
                "duels_lost": 0.0359,
                "total_contest": 0.0142,
                "won_contest": 0.0142,
                "fouls": 0.0,
                "fouls_drawn": 0.0242,
                "total_own_half_passes": 2.2557,
                "accurate_own_half_passes": 2.048,
                "bench_appearance_probability": 0.131,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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": 79.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": 1310,
                "fifa_rank": 957.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            }
          ]
        },
        "Clemens Riedel": {
          "player_id": 1129360,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 5,
          "height": 186,
          "market_value": 3900000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7429,
            "minutes": 14,
            "total_pass": 10,
            "accurate_pass": 9,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 1.2282,
            "dispossessed": 0.0,
            "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.0043,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 4,
            "total_progression": 32,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.218,
            "bench_expected_minutes": 13.62,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 1.95,
            "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": 70.0
          },
          "latest_10_games": [
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 30,
                "interceptions": 1,
                "clearances": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0057,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 37,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 23,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0205,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 30,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0172,
                "expected_assists": 0.0199,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 45,
                "accurate_pass": 39,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0024,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 35,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 9,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 16,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0033,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 10,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 66,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0197,
                "expected_assists": 0.0031,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 26,
                "accurate_pass": 22,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0127,
                "total_shots": 0,
                "total_pass": 74,
                "accurate_pass": 60,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0049,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 30,
                "tackles": 1,
                "clearances": 11,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083629,
              "match_date": "2026-05-13",
              "home_team": "Espanyol",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0063,
                "total_shots": 0,
                "total_pass": 100,
                "accurate_pass": 91,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 9,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 5074,
            "combined_rank_score": 3259.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 591.0,
            "sofascore_rating": 6.79,
            "sofascore_appearances": 20.0,
            "fifa_rank": 5928.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7429,
            "source_file": "data/player_rankings.csv",
            "player_name": "Clemens Riedel",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luis Sandoval",
                  "ranking": 5069
                },
                {
                  "player_name": "Guido Mainero",
                  "ranking": 5070
                },
                {
                  "player_name": "Montrell Culbreath",
                  "ranking": 5071
                },
                {
                  "player_name": "Juma Bah",
                  "ranking": 5072
                },
                {
                  "player_name": "Hiroki Sakai",
                  "ranking": 5073
                }
              ],
              "lower": [
                {
                  "player_name": "Martín Sarrafiore",
                  "ranking": 5075
                },
                {
                  "player_name": "Juan Manuel Cuesta",
                  "ranking": 5076
                },
                {
                  "player_name": "Sebastián Guzmán",
                  "ranking": 5077
                },
                {
                  "player_name": "Anthony Patterson",
                  "ranking": 5078
                },
                {
                  "player_name": "Miguel Rubio",
                  "ranking": 5079
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.767,
          "history_matches": 28,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 28,
            "data_confidence": 0.767,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 13.61644058998921,
            "bench_appearance_prob": 0.218,
            "market_value_adjustment": 0.9974,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.1133
            },
            "rationale": "Bench projection scaled from XGBoost D_service (28 historical appearances) to 13.6 expected mins (appearance prob 0.22); 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.3433,
                "tackles": 0.4916,
                "tackles_won": 0.2595,
                "clearances": 1.8848,
                "aerial_won": 0.8,
                "total_shots": 0.1314,
                "rating": 6.7429,
                "minutes": 19.92,
                "total_pass": 14.3876,
                "accurate_pass": 13.2725,
                "duels_won": 0.9515,
                "total_long_balls": 0.7674,
                "accurate_long_balls": 0.5934,
                "total_own_half_passes": 5.5999,
                "accurate_own_half_passes": 4.8635,
                "total_opp_half_passes": 8.7877,
                "accurate_opp_half_passes": 8.409,
                "crosses_total": 0.6864,
                "crosses_accurate": 0.0,
                "touches": 17.743,
                "possession_lost": 1.8015,
                "dispossessed": 0.0,
                "duels_lost": 1.1546,
                "aerial_lost": 0.4923,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.4228,
                "challenges_lost": 0.1479,
                "fouls": 0.5144,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0063,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.5598,
                "total_progression": 46.701,
                "progressive_carries": 0.7049,
                "key_pass": 0.174,
                "shots_off_target": 0.1314
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1516,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1289,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1095,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0931,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0791,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0673,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.0572,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0486,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0413,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 4.7371,
                  "aerialWon": 1.5373,
                  "totalClearance_p90": 5.4658,
                  "totalTackle": 0.7067,
                  "totalPass": 39.0297
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.3432979881763458,
                    "model_output": 0.3433,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4838
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0208
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0053
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0051
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0049
                        }
                      ],
                      "others": -0.0155,
                      "total": 0.3433,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.814266
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.055532
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.014612
                        },
                        {
                          "name": "touches",
                          "margin": 0.014192
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.013638
                        }
                      ],
                      "others_margin": -0.044333
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.49160921573638916,
                    "model_output": 0.4916,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7044
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0416
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0366
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0247
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0207
                        }
                      ],
                      "others": -0.0661,
                      "total": 0.4916,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.709989
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.062945
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.058866
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.041737
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.036354
                        }
                      ],
                      "others_margin": -0.126366
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.2594899833202362,
                    "model_output": 0.2595,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4443
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0336
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0257
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0137
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0117
                        }
                      ],
                      "others": -0.0572,
                      "total": 0.2595,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.745322
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.087374
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.072577
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.040885
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.036154
                        }
                      ],
                      "others_margin": -0.19914
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.8847848176956177,
                    "model_output": 1.8848,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0975
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2488
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0881
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0925
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0831
                        }
                      ],
                      "others": 0.0381,
                      "total": 1.8848,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.944709
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.170966
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.054182
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.053859
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.046039
                        }
                      ],
                      "others_margin": 0.020414
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7999780178070068,
                    "model_output": 0.8,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7508
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0549
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0383
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0311
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0291
                        }
                      ],
                      "others": 0.0198,
                      "total": 0.8,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.787439
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.084016
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.054628
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.042273
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.037947
                        }
                      ],
                      "others_margin": 0.025047
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.13136911392211914,
                    "model_output": 0.1314,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2075
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0851
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0133
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0098
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.0064
                        }
                      ],
                      "others": -0.0378,
                      "total": 0.1314,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.207529
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.085099
                        },
                        {
                          "name": "rating",
                          "margin": -0.013264
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.009775
                        },
                        {
                          "name": "totalProgression",
                          "margin": 0.006363
                        }
                      ],
                      "others_margin": -0.037866
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.742870330810547,
                    "model_output": 6.7429,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0212
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0176
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0155
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0139
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": 0.0083
                        }
                      ],
                      "others": 0.0073,
                      "total": 6.7429,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.021243
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.017608
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.015544
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.013922
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": 0.008315
                        }
                      ],
                      "others_margin": 0.007357
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 28,
                  "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.9974, quality 0.449)",
              "stats": {
                "interceptions": 0.3424,
                "tackles": 0.4903,
                "tackles_won": 0.2588,
                "clearances": 1.8799,
                "aerial_won": 0.7979,
                "total_shots": 0.1311,
                "rating": 6.7429,
                "minutes": 19.92,
                "total_pass": 14.3502,
                "accurate_pass": 13.238,
                "duels_won": 0.949,
                "total_long_balls": 0.7654,
                "accurate_long_balls": 0.5919,
                "total_own_half_passes": 5.5853,
                "accurate_own_half_passes": 4.8509,
                "total_opp_half_passes": 8.7649,
                "accurate_opp_half_passes": 8.3871,
                "crosses_total": 0.6846,
                "crosses_accurate": 0.0,
                "touches": 17.6969,
                "possession_lost": 1.7968,
                "dispossessed": 0.0,
                "duels_lost": 1.1516,
                "aerial_lost": 0.491,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.4191,
                "challenges_lost": 0.1475,
                "fouls": 0.5131,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0063,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.5427,
                "total_progression": 46.5796,
                "progressive_carries": 0.7031,
                "key_pass": 0.1735,
                "shots_off_target": 0.1311
              },
              "params": {
                "market_value_eur": 3900000,
                "quality_factor": 0.4486,
                "boost_factor": 0.9974,
                "reference_quality": 0.505,
                "history_matches": 28,
                "history_shrink": 0.1515,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0112)",
              "stats": {
                "interceptions": 0.3386,
                "tackles": 0.4903,
                "tackles_won": 0.2588,
                "clearances": 1.8799,
                "aerial_won": 0.7979,
                "total_shots": 0.1311,
                "rating": 6.7429,
                "minutes": 19.92,
                "total_pass": 14.3502,
                "accurate_pass": 13.238,
                "duels_won": 0.949,
                "total_long_balls": 0.7654,
                "accurate_long_balls": 0.5919,
                "total_own_half_passes": 5.5853,
                "accurate_own_half_passes": 4.8509,
                "total_opp_half_passes": 8.7649,
                "accurate_opp_half_passes": 8.3871,
                "crosses_total": 0.677,
                "crosses_accurate": 0.0,
                "touches": 17.6969,
                "possession_lost": 1.7968,
                "dispossessed": 0.0,
                "duels_lost": 1.1516,
                "aerial_lost": 0.491,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.4191,
                "challenges_lost": 0.1475,
                "fouls": 0.5161,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0063,
                "shots_on_target": 0.0014,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.5427,
                "total_progression": 46.5796,
                "progressive_carries": 0.7031,
                "key_pass": 0.1735,
                "shots_off_target": 0.1311
              },
              "params": {
                "blend_weight": 0.0112,
                "history_matches": 28,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2213,
                "prior_reliability": 0.1133,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.6846,
                  "after": 0.677
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.9 to 13.6 expected minutes (appearance prob 0.22)",
              "stats": {
                "interceptions": 0.2315,
                "tackles": 0.3351,
                "tackles_won": 0.1769,
                "clearances": 1.285,
                "aerial_won": 0.5454,
                "total_shots": 0.0906,
                "rating": 6.7429,
                "minutes": 13.62,
                "total_pass": 9.8092,
                "accurate_pass": 9.0489,
                "duels_won": 0.6487,
                "total_long_balls": 0.5232,
                "accurate_long_balls": 0.4046,
                "total_own_half_passes": 3.8179,
                "accurate_own_half_passes": 3.3159,
                "total_opp_half_passes": 5.9913,
                "accurate_opp_half_passes": 5.7331,
                "crosses_total": 0.4628,
                "crosses_accurate": 0.0,
                "touches": 12.0968,
                "possession_lost": 1.2282,
                "dispossessed": 0.0,
                "duels_lost": 0.7872,
                "aerial_lost": 0.491,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.97,
                "challenges_lost": 0.1475,
                "fouls": 0.3528,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0043,
                "shots_on_target": 0.001,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4723,
                "total_progression": 31.8398,
                "progressive_carries": 0.4806,
                "key_pass": 0.1186,
                "shots_off_target": 0.0896,
                "bench_appearance_probability": 0.218,
                "bench_expected_minutes": 13.62
              },
              "params": {
                "expected_minutes": 13.62,
                "projection_minutes": 19.92,
                "minutes_scale": 0.6836,
                "appearance_probability": 0.218
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2315,
                "tackles": 0.3351,
                "tackles_won": 0.1769,
                "clearances": 1.285,
                "aerial_won": 0.5454,
                "total_shots": 0.0906,
                "rating": 6.7429,
                "minutes": 13.62,
                "total_pass": 9.8092,
                "accurate_pass": 9.0489,
                "duels_won": 0.6487,
                "total_long_balls": 0.5232,
                "accurate_long_balls": 0.4046,
                "total_own_half_passes": 3.8179,
                "accurate_own_half_passes": 3.3159,
                "total_opp_half_passes": 5.9913,
                "accurate_opp_half_passes": 5.7331,
                "crosses_total": 0.4628,
                "crosses_accurate": 0.0,
                "touches": 12.0968,
                "possession_lost": 1.2282,
                "dispossessed": 0.0,
                "duels_lost": 0.7872,
                "aerial_lost": 0.491,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.97,
                "challenges_lost": 0.1475,
                "fouls": 0.3528,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0043,
                "shots_on_target": 0.001,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4723,
                "total_progression": 31.8398,
                "progressive_carries": 0.4806,
                "key_pass": 0.1186,
                "shots_off_target": 0.0896,
                "bench_appearance_probability": 0.218,
                "bench_expected_minutes": 13.62
              },
              "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.2315,
                "tackles": 0.3351,
                "tackles_won": 0.1769,
                "clearances": 1.285,
                "aerial_won": 0.5454,
                "total_shots": 0.0906,
                "rating": 6.7429,
                "minutes": 13.62,
                "total_pass": 9.8092,
                "accurate_pass": 9.0489,
                "duels_won": 0.6487,
                "total_long_balls": 0.5232,
                "accurate_long_balls": 0.4046,
                "total_own_half_passes": 3.8179,
                "accurate_own_half_passes": 3.3159,
                "total_opp_half_passes": 5.9913,
                "accurate_opp_half_passes": 5.7331,
                "crosses_total": 0.4628,
                "crosses_accurate": 0.0,
                "touches": 12.0968,
                "possession_lost": 1.2282,
                "dispossessed": 0.0,
                "duels_lost": 0.7872,
                "aerial_lost": 0.491,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.97,
                "challenges_lost": 0.1475,
                "fouls": 0.3528,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0043,
                "shots_on_target": 0.001,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4723,
                "total_progression": 31.8398,
                "progressive_carries": 0.4806,
                "key_pass": 0.1186,
                "shots_off_target": 0.0896,
                "bench_appearance_probability": 0.218,
                "bench_expected_minutes": 13.62,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.218,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 70.0)",
              "stats": {
                "interceptions": 0.2315,
                "tackles": 0.3351,
                "tackles_won": 0.1769,
                "clearances": 1.285,
                "aerial_won": 0.5454,
                "total_shots": 0.0906,
                "rating": 6.7429,
                "minutes": 13.62,
                "total_pass": 9.8092,
                "accurate_pass": 9.0489,
                "duels_won": 0.6487,
                "total_long_balls": 0.5232,
                "accurate_long_balls": 0.4046,
                "total_own_half_passes": 3.8179,
                "accurate_own_half_passes": 3.3159,
                "total_opp_half_passes": 5.9913,
                "accurate_opp_half_passes": 5.7331,
                "crosses_total": 0.4628,
                "crosses_accurate": 0.0,
                "touches": 12.0968,
                "possession_lost": 1.2282,
                "dispossessed": 0.0,
                "duels_lost": 0.7872,
                "aerial_lost": 0.491,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.97,
                "challenges_lost": 0.1475,
                "fouls": 0.3528,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0043,
                "shots_on_target": 0.001,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4723,
                "total_progression": 31.8398,
                "progressive_carries": 0.4806,
                "key_pass": 0.1186,
                "shots_off_target": 0.0896,
                "bench_appearance_probability": 0.218,
                "bench_expected_minutes": 13.62,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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": 70.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 5074,
                "fifa_rank": 5928.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 70.0
              }
            }
          ]
        },
        "Unai Núñez": {
          "player_id": 892521,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 14,
          "height": 186,
          "market_value": 3300000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7785,
            "minutes": 14,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 11,
            "possession_lost": 1.9762,
            "dispossessed": 0.1941,
            "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.0013,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 5,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.217,
            "bench_expected_minutes": 13.59,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 1.95,
            "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": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 1,
                "accurate_pass": 0,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 0,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 26,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 2,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 67,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0537,
                "expected_assists": 0.0331,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 65,
                "accurate_pass": 61,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 5,
                "clearances": 3,
                "aerial_won": 5,
                "duels_won": 9,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 86,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0238,
                "expected_assists": 0.0192,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 62,
                "accurate_pass": 45,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3866,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 42,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 7,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 37,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 70,
                "accurate_pass": 65,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2023,
                "expected_assists": 0.1132,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 3,
                "total_pass": 20,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083687,
              "match_date": "2026-05-17",
              "home_team": "Real Sociedad",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 83,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0073,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 32,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083639,
              "match_date": "2026-05-14",
              "home_team": "Valencia",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 58,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0107,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 39,
                "tackles": 3,
                "interceptions": 3,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3298,
            "combined_rank_score": 1247.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 91.0,
            "sofascore_rating": 7.5,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2403.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7785,
            "source_file": "data/player_rankings.csv",
            "player_name": "Unai Núñez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nobel Mendy",
                  "ranking": 3293
                },
                {
                  "player_name": "Michael Zetterer",
                  "ranking": 3294
                },
                {
                  "player_name": "Lukas Nmecha",
                  "ranking": 3295
                },
                {
                  "player_name": "Ruslan Malinovskyi",
                  "ranking": 3296
                },
                {
                  "player_name": "Ibrahim Mbaye",
                  "ranking": 3297
                }
              ],
              "lower": [
                {
                  "player_name": "Rodrigo Muniz",
                  "ranking": 3299
                },
                {
                  "player_name": "Raíllo",
                  "ranking": 3300
                },
                {
                  "player_name": "Gelson Martins",
                  "ranking": 3301
                },
                {
                  "player_name": "Abel Bretones",
                  "ranking": 3302
                },
                {
                  "player_name": "Chiquinho",
                  "ranking": 3303
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 20,
          "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": 20,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 13.586980405874904,
            "bench_appearance_prob": 0.217,
            "market_value_adjustment": 0.9962,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "Bench projection scaled from XGBoost D_service (20 historical appearances) to 13.6 expected mins (appearance prob 0.22); 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.3705,
                "tackles": 0.5796,
                "tackles_won": 0.3189,
                "clearances": 1.178,
                "aerial_won": 0.6647,
                "total_shots": 0.1894,
                "rating": 6.7785,
                "minutes": 21.47,
                "total_pass": 11.4165,
                "accurate_pass": 8.9007,
                "duels_won": 1.594,
                "total_long_balls": 2.3181,
                "accurate_long_balls": 1.3096,
                "total_own_half_passes": 5.8721,
                "accurate_own_half_passes": 5.4481,
                "total_opp_half_passes": 5.5444,
                "accurate_opp_half_passes": 3.4526,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 17.6946,
                "possession_lost": 3.1346,
                "dispossessed": 0.1948,
                "duels_lost": 1.1836,
                "aerial_lost": 0.3356,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.848,
                "challenges_lost": 0.2292,
                "fouls": 0.424,
                "fouls_drawn": 0.2815,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0021,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.487,
                "total_progression": 8.1563,
                "progressive_carries": 0.1948,
                "key_pass": 0.0,
                "shots_off_target": 0.1894
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:04:35.806070+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 625,
                    "rows": 21826
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.156,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.1326,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.1127,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.0958,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0815,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0692,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0589,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.05,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Sociedad",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0425,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Rayo Vallecano",
                    "minutes": 58.0,
                    "is_starting": false,
                    "weight": 0.0361,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 2.9611,
                  "aerialWon": 1.4786,
                  "totalClearance_p90": 3.5206,
                  "totalTackle": 1.3352,
                  "totalPass": 34.0693
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.37052497267723083,
                    "model_output": 0.3705,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.289
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0463
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0289
                      },
                      {
                        "name": "touches",
                        "importance": 0.0285
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0217
                      }
                    ],
                    "decomposition": {
                      "base": 0.8685,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4928
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0258
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0097
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.008
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0067
                        }
                      ],
                      "others": -0.0066,
                      "total": 0.3705,
                      "log_link": true,
                      "margin_base": -0.140967,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.837907
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.066311
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.024352
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.020593
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.017643
                        }
                      ],
                      "others_margin": -0.017682
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5795734524726868,
                    "model_output": 0.5796,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2458
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0642
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0583
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 1.3857,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.776
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0211
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0171
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0148
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0124
                        }
                      ],
                      "others": -0.0237,
                      "total": 0.5796,
                      "log_link": true,
                      "margin_base": 0.326186,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.821033
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.035286
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.028579
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.024767
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.020747
                        }
                      ],
                      "others_margin": -0.039888
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.3188650608062744,
                    "model_output": 0.3189,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1981
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0663
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0478
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0408
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.8457,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4847
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0093
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0092
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0089
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": 0.0076
                        }
                      ],
                      "others": -0.0407,
                      "total": 0.3189,
                      "log_link": true,
                      "margin_base": -0.167585,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.851207
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.026006
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.025745
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": -0.02494
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": 0.021431
                        }
                      ],
                      "others_margin": -0.120425
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.1779874563217163,
                    "model_output": 1.178,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2965
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1411
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.1086
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0347
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0221
                      }
                    ],
                    "decomposition": {
                      "base": 3.4317,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0561
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0833
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0675
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0514
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0359
                        }
                      ],
                      "others": -0.0313,
                      "total": 1.178,
                      "log_link": true,
                      "margin_base": 1.233062,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.91419
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.06245
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.053607
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.042905
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.030118
                        }
                      ],
                      "others_margin": -0.026221
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.6647233963012695,
                    "model_output": 0.6647,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1626
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1535
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0722
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.04
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0282
                      }
                    ],
                    "decomposition": {
                      "base": 1.3776,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7327
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0462
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0275
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0151
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0144
                        }
                      ],
                      "others": 0.0004,
                      "total": 0.6647,
                      "log_link": true,
                      "margin_base": 0.320358,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.758937
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.069204
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.04055
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.022534
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.021499
                        }
                      ],
                      "others_margin": 0.000506
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.18942372500896454,
                    "model_output": 0.1894,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0667
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0336
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0292
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0274
                      }
                    ],
                    "decomposition": {
                      "base": 0.4785,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2525
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0151
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0141
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0119
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0118
                        }
                      ],
                      "others": -0.0357,
                      "total": 0.1894,
                      "log_link": false,
                      "margin_base": 0.47854,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.252527
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.015121
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.014142
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.011922
                        },
                        {
                          "name": "rating",
                          "margin": -0.011804
                        }
                      ],
                      "others_margin": -0.035727
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.778461456298828,
                    "model_output": 6.7785,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0906
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0563
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0496
                      },
                      {
                        "name": "rating",
                        "importance": 0.0303
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 6.7955,
                      "items": [
                        {
                          "name": "touches_p90",
                          "contribution": 0.0284
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0211
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0134
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0111
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.009
                        }
                      ],
                      "others": 0.0092,
                      "total": 6.7785,
                      "log_link": false,
                      "margin_base": 6.795516,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": 0.028388
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.021126
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013447
                        },
                        {
                          "name": "rating",
                          "margin": -0.011143
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.008984
                        }
                      ],
                      "others_margin": 0.009258
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 20,
                  "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.9962, quality 0.441)",
              "stats": {
                "interceptions": 0.3691,
                "tackles": 0.5774,
                "tackles_won": 0.3177,
                "clearances": 1.1735,
                "aerial_won": 0.6622,
                "total_shots": 0.1887,
                "rating": 6.7785,
                "minutes": 21.47,
                "total_pass": 11.3731,
                "accurate_pass": 8.8669,
                "duels_won": 1.5879,
                "total_long_balls": 2.3093,
                "accurate_long_balls": 1.3046,
                "total_own_half_passes": 5.8498,
                "accurate_own_half_passes": 5.4274,
                "total_opp_half_passes": 5.5233,
                "accurate_opp_half_passes": 3.4395,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 17.6274,
                "possession_lost": 3.1227,
                "dispossessed": 0.1941,
                "duels_lost": 1.1791,
                "aerial_lost": 0.3343,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.8448,
                "challenges_lost": 0.2283,
                "fouls": 0.4224,
                "fouls_drawn": 0.2804,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0021,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4737,
                "total_progression": 8.1253,
                "progressive_carries": 0.1941,
                "key_pass": 0.0,
                "shots_off_target": 0.1887
              },
              "params": {
                "market_value_eur": 3300000,
                "quality_factor": 0.4412,
                "boost_factor": 0.9962,
                "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.0260)",
              "stats": {
                "interceptions": 0.3636,
                "tackles": 0.5774,
                "tackles_won": 0.3136,
                "clearances": 1.1735,
                "aerial_won": 0.6622,
                "total_shots": 0.1838,
                "rating": 6.7785,
                "minutes": 21.47,
                "total_pass": 11.3731,
                "accurate_pass": 8.8669,
                "duels_won": 1.5879,
                "total_long_balls": 2.3093,
                "accurate_long_balls": 1.3046,
                "total_own_half_passes": 5.8498,
                "accurate_own_half_passes": 5.4274,
                "total_opp_half_passes": 5.5233,
                "accurate_opp_half_passes": 3.4395,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 17.6274,
                "possession_lost": 3.1227,
                "dispossessed": 0.1941,
                "duels_lost": 1.1791,
                "aerial_lost": 0.3343,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.8448,
                "challenges_lost": 0.2283,
                "fouls": 0.4114,
                "fouls_drawn": 0.2793,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0021,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4737,
                "total_progression": 8.1253,
                "progressive_carries": 0.1941,
                "key_pass": 0.0,
                "shots_off_target": 0.1887
              },
              "params": {
                "blend_weight": 0.026,
                "history_matches": 20,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2386,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.4224,
                  "after": 0.4114
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.3691,
                  "after": 0.3636
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 21.5 to 13.6 expected minutes (appearance prob 0.22)",
              "stats": {
                "interceptions": 0.2301,
                "tackles": 0.3654,
                "tackles_won": 0.1985,
                "clearances": 0.7426,
                "aerial_won": 0.4191,
                "total_shots": 0.1194,
                "rating": 6.7785,
                "minutes": 13.59,
                "total_pass": 7.1973,
                "accurate_pass": 5.6113,
                "duels_won": 1.0049,
                "total_long_balls": 1.4614,
                "accurate_long_balls": 0.8256,
                "total_own_half_passes": 3.702,
                "accurate_own_half_passes": 3.4347,
                "total_opp_half_passes": 3.4953,
                "accurate_opp_half_passes": 2.1766,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 11.1552,
                "possession_lost": 1.9762,
                "dispossessed": 0.1941,
                "duels_lost": 0.7462,
                "aerial_lost": 0.3343,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.5346,
                "challenges_lost": 0.2283,
                "fouls": 0.2603,
                "fouls_drawn": 0.1768,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.1983,
                "total_progression": 5.142,
                "progressive_carries": 0.1228,
                "key_pass": 0.0,
                "shots_off_target": 0.1194,
                "bench_appearance_probability": 0.217,
                "bench_expected_minutes": 13.59
              },
              "params": {
                "expected_minutes": 13.59,
                "projection_minutes": 21.47,
                "minutes_scale": 0.6328,
                "appearance_probability": 0.217
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2301,
                "tackles": 0.3654,
                "tackles_won": 0.1985,
                "clearances": 0.7426,
                "aerial_won": 0.4191,
                "total_shots": 0.1194,
                "rating": 6.7785,
                "minutes": 13.59,
                "total_pass": 7.1973,
                "accurate_pass": 5.6113,
                "duels_won": 1.0049,
                "total_long_balls": 1.4614,
                "accurate_long_balls": 0.8256,
                "total_own_half_passes": 3.702,
                "accurate_own_half_passes": 3.4347,
                "total_opp_half_passes": 3.4953,
                "accurate_opp_half_passes": 2.1766,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 11.1552,
                "possession_lost": 1.9762,
                "dispossessed": 0.1941,
                "duels_lost": 0.7462,
                "aerial_lost": 0.3343,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.5346,
                "challenges_lost": 0.2283,
                "fouls": 0.2603,
                "fouls_drawn": 0.1768,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.1983,
                "total_progression": 5.142,
                "progressive_carries": 0.1228,
                "key_pass": 0.0,
                "shots_off_target": 0.1194,
                "bench_appearance_probability": 0.217,
                "bench_expected_minutes": 13.59
              },
              "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.2301,
                "tackles": 0.3654,
                "tackles_won": 0.1985,
                "clearances": 0.7426,
                "aerial_won": 0.4191,
                "total_shots": 0.1194,
                "rating": 6.7785,
                "minutes": 13.59,
                "total_pass": 7.1973,
                "accurate_pass": 5.6113,
                "duels_won": 1.0049,
                "total_long_balls": 1.4614,
                "accurate_long_balls": 0.8256,
                "total_own_half_passes": 3.702,
                "accurate_own_half_passes": 3.4347,
                "total_opp_half_passes": 3.4953,
                "accurate_opp_half_passes": 2.1766,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 11.1552,
                "possession_lost": 1.9762,
                "dispossessed": 0.1941,
                "duels_lost": 0.7462,
                "aerial_lost": 0.3343,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.5346,
                "challenges_lost": 0.2283,
                "fouls": 0.2603,
                "fouls_drawn": 0.1768,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.1983,
                "total_progression": 5.142,
                "progressive_carries": 0.1228,
                "key_pass": 0.0,
                "shots_off_target": 0.1194,
                "bench_appearance_probability": 0.217,
                "bench_expected_minutes": 13.59,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.217,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 75.0)",
              "stats": {
                "interceptions": 0.2301,
                "tackles": 0.3654,
                "tackles_won": 0.1985,
                "clearances": 0.7426,
                "aerial_won": 0.4191,
                "total_shots": 0.1194,
                "rating": 6.7785,
                "minutes": 13.59,
                "total_pass": 7.1973,
                "accurate_pass": 5.6113,
                "duels_won": 1.0049,
                "total_long_balls": 1.4614,
                "accurate_long_balls": 0.8256,
                "total_own_half_passes": 3.702,
                "accurate_own_half_passes": 3.4347,
                "total_opp_half_passes": 3.4953,
                "accurate_opp_half_passes": 2.1766,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 11.1552,
                "possession_lost": 1.9762,
                "dispossessed": 0.1941,
                "duels_lost": 0.7462,
                "aerial_lost": 0.3343,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.5346,
                "challenges_lost": 0.2283,
                "fouls": 0.2603,
                "fouls_drawn": 0.1768,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.1983,
                "total_progression": 5.142,
                "progressive_carries": 0.1228,
                "key_pass": 0.0,
                "shots_off_target": 0.1194,
                "bench_appearance_probability": 0.217,
                "bench_expected_minutes": 13.59,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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": 9,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3298,
                "fifa_rank": 2403.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            }
          ]
        },
        "Urko González": {
          "player_id": 1064009,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 189,
          "market_value": 11600000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.02,
            "assist_rate": 0.0397,
            "assists": 0,
            "expected_goals": 0.0181,
            "goal_rate": 0.0249,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.677,
            "minutes": 22,
            "total_pass": 10,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 15,
            "possession_lost": 3.5651,
            "dispossessed": 0.3585,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 4,
            "total_progression": 22,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.315,
            "bench_expected_minutes": 22.38,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 1.95,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 12,
                "rating": 6.7,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 0,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 33,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0024,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 4,
                "interceptions": 1,
                "clearances": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 45,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0127,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 21
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416345,
              "match_date": "2026-09-15",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 84,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0092,
                "expected_assists": 0.0489,
                "total_shots": 1,
                "total_pass": 30,
                "accurate_pass": 26,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0036,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 24,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 31,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0109,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 16,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 45,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 19,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 75,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0151,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 28,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 72,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0196,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 27,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083719,
              "match_date": "2026-05-23",
              "home_team": "Espanyol",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0136,
                "expected_assists": 0.1222,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 42,
                "accurate_pass": 36,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3267,
            "combined_rank_score": 1211.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1978.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.677,
            "source_file": "data/player_rankings.csv",
            "player_name": "Urko González",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Félix Correia",
                  "ranking": 3262
                },
                {
                  "player_name": "Kenneth Taylor",
                  "ranking": 3263
                },
                {
                  "player_name": "Johan Vásquez",
                  "ranking": 3264
                },
                {
                  "player_name": "Mamadou Sarr",
                  "ranking": 3265
                },
                {
                  "player_name": "Yoan Bonny",
                  "ranking": 3266
                }
              ],
              "lower": [
                {
                  "player_name": "Tasos Douvikas",
                  "ranking": 3268
                },
                {
                  "player_name": "Sam Beukema",
                  "ranking": 3269
                },
                {
                  "player_name": "Máximo Perrone",
                  "ranking": 3270
                },
                {
                  "player_name": "Federico Viñas",
                  "ranking": 3271
                },
                {
                  "player_name": "Marco Reus",
                  "ranking": 3272
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.771,
          "history_matches": 45,
          "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": 45,
            "data_confidence": 0.771,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.382626929085877,
            "bench_appearance_prob": 0.315,
            "market_value_adjustment": 1.0011,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.14
            },
            "rationale": "Bench projection scaled from XGBoost M_service (45 historical appearances) to 22.4 expected mins (appearance prob 0.32); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.2691,
                "expected_assists": 0.0192,
                "assists": 0.0384,
                "assist_rate": 0.0384,
                "expected_goals": 0.0174,
                "goals": 0.024,
                "goal_rate": 0.024,
                "shots_on_target": 0.0654,
                "total_shots": 0.2969,
                "rating": 6.677,
                "minutes": 21.46,
                "total_pass": 9.3657,
                "accurate_pass": 7.0422,
                "duels_won": 1.7062,
                "total_long_balls": 0.3205,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.3619,
                "accurate_own_half_passes": 1.8053,
                "total_opp_half_passes": 7.0038,
                "accurate_opp_half_passes": 5.2369,
                "crosses_total": 0.1106,
                "crosses_accurate": 0.0,
                "touches": 14.2016,
                "possession_lost": 3.4143,
                "dispossessed": 0.3581,
                "duels_lost": 1.8819,
                "aerial_won": 0.5279,
                "aerial_lost": 0.6647,
                "interceptions": 0.313,
                "tackles_won": 0.7077,
                "tackles": 0.7077,
                "clearances": 0.833,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.4849,
                "fouls": 0.3742,
                "fouls_drawn": 0.4706,
                "blocks": 0.1886,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.8174,
                "total_progression": 21.4867,
                "progressive_carries": 0.9069,
                "shots_off_target": 0.2315
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1501,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 33.0,
                    "is_starting": false,
                    "weight": 0.1276,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Rayo Vallecano",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.2216,
                  "creative_index": 0.0436,
                  "expectedGoals": 0.0044,
                  "expectedAssists": 0.0166,
                  "totalOppositionHalfPasses": 11.4625
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.26914966106414795,
                    "model_output": 0.2691,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3938
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0601
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0506
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0358
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0173
                        }
                      ],
                      "others": -0.0636,
                      "total": 0.2691,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.583944
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.128933
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.123152
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.097336
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.050716
                        }
                      ],
                      "others_margin": -0.212179
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.01917867362499237,
                    "model_output": 0.0192,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0329
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0107
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0071
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0029
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0097,
                      "total": 0.0192,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.490628
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.231164
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.190086
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.087709
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.080245
                        }
                      ],
                      "others_margin": -0.408346
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.03835248202085495,
                    "model_output": 0.0384,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0209
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0109
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0043
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0032
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0047,
                      "total": 0.0384,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.281473
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.185817
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.083706
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.067116
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.059406
                        }
                      ],
                      "others_margin": -0.118584
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.017398005351424217,
                    "model_output": 0.0174,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0411
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0196
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0055
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0018
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0016
                        }
                      ],
                      "others": -0.0044,
                      "total": 0.0174,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.596518
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.493736
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.196811
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.074585
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.069766
                        }
                      ],
                      "others_margin": -0.227805
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.024027766659855843,
                    "model_output": 0.024,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0361
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0136
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0085
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0027
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0022
                        }
                      ],
                      "others": -0.0079,
                      "total": 0.024,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.47797
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.263094
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.207279
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.075006
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.066943
                        }
                      ],
                      "others_margin": -0.284223
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.06541475653648376,
                    "model_output": 0.0654,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1475
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0513
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0223
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0059
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.0217,
                      "total": 0.0654,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.622608
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.357471
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.206605
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.062184
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.046672
                        }
                      ],
                      "others_margin": -0.286694
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.29687678813934326,
                    "model_output": 0.2969,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3383
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2048
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0383
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0353
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0347
                        }
                      ],
                      "others": -0.0358,
                      "total": 0.2969,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.338316
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.204839
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.038335
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.035329
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.03465
                        }
                      ],
                      "others_margin": -0.035763
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.676988124847412,
                    "model_output": 6.677,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0671
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0326
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0222
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0138
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0109
                        }
                      ],
                      "others": -0.0316,
                      "total": 6.677,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.067122
                        },
                        {
                          "name": "rating",
                          "margin": -0.03261
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.022218
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.013801
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.010925
                        }
                      ],
                      "others_margin": -0.031528
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 45,
                  "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.0011, quality 0.541)",
              "stats": {
                "key_pass": 0.2694,
                "expected_assists": 0.0192,
                "assists": 0.0384,
                "assist_rate": 0.0384,
                "expected_goals": 0.0174,
                "goals": 0.0241,
                "goal_rate": 0.0241,
                "shots_on_target": 0.0655,
                "total_shots": 0.2973,
                "rating": 6.677,
                "minutes": 21.46,
                "total_pass": 9.376,
                "accurate_pass": 7.0499,
                "duels_won": 1.7081,
                "total_long_balls": 0.3209,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.3645,
                "accurate_own_half_passes": 1.8073,
                "total_opp_half_passes": 7.0115,
                "accurate_opp_half_passes": 5.2427,
                "crosses_total": 0.1107,
                "crosses_accurate": 0.0,
                "touches": 14.2172,
                "possession_lost": 3.4181,
                "dispossessed": 0.3585,
                "duels_lost": 1.884,
                "aerial_won": 0.5285,
                "aerial_lost": 0.6654,
                "interceptions": 0.3133,
                "tackles_won": 0.7085,
                "tackles": 0.7085,
                "clearances": 0.8339,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.4854,
                "fouls": 0.3746,
                "fouls_drawn": 0.4711,
                "blocks": 0.1888,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.8216,
                "total_progression": 21.5103,
                "progressive_carries": 0.9079,
                "shots_off_target": 0.2318
              },
              "params": {
                "market_value_eur": 11600000,
                "quality_factor": 0.5411,
                "boost_factor": 1.0011,
                "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.0091)",
              "stats": {
                "key_pass": 0.2694,
                "expected_assists": 0.0192,
                "assists": 0.0381,
                "assist_rate": 0.0381,
                "expected_goals": 0.0174,
                "goals": 0.0239,
                "goal_rate": 0.0239,
                "shots_on_target": 0.0649,
                "total_shots": 0.2946,
                "rating": 6.677,
                "minutes": 21.46,
                "total_pass": 9.376,
                "accurate_pass": 7.0499,
                "duels_won": 1.7081,
                "total_long_balls": 0.3209,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.3645,
                "accurate_own_half_passes": 1.8073,
                "total_opp_half_passes": 7.0115,
                "accurate_opp_half_passes": 5.2427,
                "crosses_total": 0.1097,
                "crosses_accurate": 0.0,
                "touches": 14.2172,
                "possession_lost": 3.4181,
                "dispossessed": 0.3585,
                "duels_lost": 1.884,
                "aerial_won": 0.5285,
                "aerial_lost": 0.6654,
                "interceptions": 0.3125,
                "tackles_won": 0.7031,
                "tackles": 0.7085,
                "clearances": 0.8339,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.4854,
                "fouls": 0.3733,
                "fouls_drawn": 0.4689,
                "blocks": 0.1888,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.8216,
                "total_progression": 21.5103,
                "progressive_carries": 0.9079,
                "shots_off_target": 0.2318
              },
              "params": {
                "blend_weight": 0.0091,
                "history_matches": 45,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2384,
                "prior_reliability": 0.14,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.7085,
                  "after": 0.7031
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 21.5 to 22.4 expected minutes (appearance prob 0.32)",
              "stats": {
                "key_pass": 0.281,
                "expected_assists": 0.02,
                "assists": 0.0397,
                "assist_rate": 0.0397,
                "expected_goals": 0.0181,
                "goals": 0.0249,
                "goal_rate": 0.0249,
                "shots_on_target": 0.0677,
                "total_shots": 0.3095,
                "rating": 6.677,
                "minutes": 22.38,
                "total_pass": 9.7791,
                "accurate_pass": 7.353,
                "duels_won": 1.7815,
                "total_long_balls": 0.3347,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.4662,
                "accurate_own_half_passes": 1.885,
                "total_opp_half_passes": 7.3129,
                "accurate_opp_half_passes": 5.4681,
                "crosses_total": 0.1144,
                "crosses_accurate": 0.0,
                "touches": 14.8284,
                "possession_lost": 3.5651,
                "dispossessed": 0.3585,
                "duels_lost": 1.965,
                "aerial_won": 0.5512,
                "aerial_lost": 0.6654,
                "interceptions": 0.3259,
                "tackles_won": 0.7333,
                "tackles": 0.739,
                "clearances": 0.8698,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.4854,
                "fouls": 0.3893,
                "fouls_drawn": 0.4891,
                "blocks": 0.1969,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.9859,
                "total_progression": 22.4351,
                "progressive_carries": 0.9469,
                "shots_off_target": 0.2418,
                "bench_appearance_probability": 0.315,
                "bench_expected_minutes": 22.38
              },
              "params": {
                "expected_minutes": 22.38,
                "projection_minutes": 21.46,
                "minutes_scale": 1.043,
                "appearance_probability": 0.315
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.281,
                "expected_assists": 0.02,
                "assists": 0.0397,
                "assist_rate": 0.0397,
                "expected_goals": 0.0181,
                "goals": 0.0249,
                "goal_rate": 0.0249,
                "shots_on_target": 0.0677,
                "total_shots": 0.3095,
                "rating": 6.677,
                "minutes": 22.38,
                "total_pass": 9.7791,
                "accurate_pass": 7.353,
                "duels_won": 1.7815,
                "total_long_balls": 0.3347,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.4662,
                "accurate_own_half_passes": 1.885,
                "total_opp_half_passes": 7.3129,
                "accurate_opp_half_passes": 5.4681,
                "crosses_total": 0.1144,
                "crosses_accurate": 0.0,
                "touches": 14.8284,
                "possession_lost": 3.5651,
                "dispossessed": 0.3585,
                "duels_lost": 1.965,
                "aerial_won": 0.5512,
                "aerial_lost": 0.6654,
                "interceptions": 0.3259,
                "tackles_won": 0.7333,
                "tackles": 0.739,
                "clearances": 0.8698,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.4854,
                "fouls": 0.3893,
                "fouls_drawn": 0.4891,
                "blocks": 0.1969,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.9859,
                "total_progression": 22.4351,
                "progressive_carries": 0.9469,
                "shots_off_target": 0.2418,
                "bench_appearance_probability": 0.315,
                "bench_expected_minutes": 22.38
              },
              "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.281,
                "expected_assists": 0.02,
                "assist_rate": 0.0397,
                "assists": 0,
                "expected_goals": 0.0181,
                "goal_rate": 0.0249,
                "goals": 0,
                "shots_on_target": 0.0677,
                "total_shots": 0.3095,
                "rating": 6.677,
                "minutes": 22.38,
                "total_pass": 9.7791,
                "accurate_pass": 7.353,
                "duels_won": 1.7815,
                "total_long_balls": 0.3347,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.4662,
                "accurate_own_half_passes": 1.885,
                "total_opp_half_passes": 7.3129,
                "accurate_opp_half_passes": 5.4681,
                "crosses_total": 0.1144,
                "crosses_accurate": 0.0,
                "touches": 14.8284,
                "possession_lost": 3.5651,
                "dispossessed": 0.3585,
                "duels_lost": 1.965,
                "aerial_won": 0.5512,
                "aerial_lost": 0.6654,
                "interceptions": 0.3259,
                "tackles_won": 0.7333,
                "tackles": 0.739,
                "clearances": 0.8698,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.4854,
                "fouls": 0.3893,
                "fouls_drawn": 0.4891,
                "blocks": 0.1969,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.9859,
                "total_progression": 22.4351,
                "progressive_carries": 0.9469,
                "shots_off_target": 0.2418,
                "bench_appearance_probability": 0.315,
                "bench_expected_minutes": 22.38,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.315,
                "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 76.0)",
              "stats": {
                "key_pass": 0.281,
                "expected_assists": 0.02,
                "assist_rate": 0.0397,
                "assists": 0,
                "expected_goals": 0.0181,
                "goal_rate": 0.0249,
                "goals": 0,
                "shots_on_target": 0.0677,
                "total_shots": 0.3095,
                "rating": 6.677,
                "minutes": 22.38,
                "total_pass": 9.7791,
                "accurate_pass": 7.353,
                "duels_won": 1.7815,
                "total_long_balls": 0.3347,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.4662,
                "accurate_own_half_passes": 1.885,
                "total_opp_half_passes": 7.3129,
                "accurate_opp_half_passes": 5.4681,
                "crosses_total": 0.1144,
                "crosses_accurate": 0.0,
                "touches": 14.8284,
                "possession_lost": 3.5651,
                "dispossessed": 0.3585,
                "duels_lost": 1.965,
                "aerial_won": 0.5512,
                "aerial_lost": 0.6654,
                "interceptions": 0.3259,
                "tackles_won": 0.7333,
                "tackles": 0.739,
                "clearances": 0.8698,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.4854,
                "fouls": 0.3893,
                "fouls_drawn": 0.4891,
                "blocks": 0.1969,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.9859,
                "total_progression": 22.4351,
                "progressive_carries": 0.9469,
                "shots_off_target": 0.2418,
                "bench_appearance_probability": 0.315,
                "bench_expected_minutes": 22.38,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3267,
                "fifa_rank": 1978.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            }
          ]
        },
        "Cyril Ngonge": {
          "player_id": 877037,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 16,
          "height": 179,
          "market_value": 6800000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0491,
            "assist_rate": 0.0955,
            "assists": 0,
            "expected_goals": 0.0383,
            "goal_rate": 0.097,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7187,
            "minutes": 22,
            "total_pass": 9,
            "accurate_pass": 8,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 6,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 17,
            "possession_lost": 4.0372,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0159,
            "ball_carries": 6,
            "total_progression": 20,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.507,
            "bench_expected_minutes": 22.16,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 1.95,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0369,
            "projected_assists": 0,
            "assist_probability": 0.0468,
            "finishing_factor": 1.25,
            "creation_factor": 1.0536,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 14083221,
              "match_date": "2026-04-27",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 58,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0146,
                "expected_assists": 0.2677,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 14,
                "accurate_pass": 11,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083330,
              "match_date": "2026-04-23",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 12,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0848,
                "expected_assists": 0.1093,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 4,
                "key_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083113,
              "match_date": "2026-04-11",
              "home_team": "FC Barcelona",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 64,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0834,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 2,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14081811,
              "match_date": "2026-04-04",
              "home_team": "Real Betis",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 78,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0153,
                "expected_assists": 0.0016,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 8,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083673,
              "match_date": "2026-03-21",
              "home_team": "Espanyol",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Getafe",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1223,
                "expected_assists": 0.1253,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 9,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 4,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14081800,
              "match_date": "2026-03-09",
              "home_team": "Espanyol",
              "away_team": "Real Oviedo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 62,
                "rating": 6.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1511,
                "expected_assists": 0.185,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 27,
                "accurate_pass": 20,
                "key_pass": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083561,
              "match_date": "2026-02-21",
              "home_team": "Atlético Madrid",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 20,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0343,
                "expected_assists": 0.0078,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 8,
                "interceptions": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083524,
              "match_date": "2026-02-14",
              "home_team": "Espanyol",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 56,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1116,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 17,
                "key_pass": 1,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083303,
              "match_date": "2026-02-09",
              "home_team": "Villarreal",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 31,
                "rating": 7.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0491,
                "expected_assists": 0.0633,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 14,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 4446,
            "combined_rank_score": 2464.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 784.0,
            "sofascore_rating": 6.6333,
            "sofascore_appearances": 9.0,
            "fifa_rank": 4144.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7187,
            "source_file": "data/player_rankings.csv",
            "player_name": "Cyril Ngonge",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lyle Foster",
                  "ranking": 4441
                },
                {
                  "player_name": "Bruma",
                  "ranking": 4442
                },
                {
                  "player_name": "João Carvalho",
                  "ranking": 4443
                },
                {
                  "player_name": "Herman Johansson",
                  "ranking": 4444
                },
                {
                  "player_name": "Jordan Holsgrove",
                  "ranking": 4445
                }
              ],
              "lower": [
                {
                  "player_name": "Patrick Roberts",
                  "ranking": 4447
                },
                {
                  "player_name": "Yanis Begraoui",
                  "ranking": 4448
                },
                {
                  "player_name": "Vítor Carvalho",
                  "ranking": 4449
                },
                {
                  "player_name": "Pau Víctor",
                  "ranking": 4450
                },
                {
                  "player_name": "Mike Trésor",
                  "ranking": 4451
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "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.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.157394470824215,
            "bench_appearance_prob": 0.5071542941283733,
            "market_value_adjustment": 0.9978,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (9 historical appearances) to 22.2 expected mins (appearance prob 0.51)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.6719,
                "expected_assists": 0.0781,
                "assists": 0.0846,
                "assist_rate": 0.0846,
                "expected_goals": 0.0566,
                "goals": 0.086,
                "goal_rate": 0.086,
                "shots_on_target": 0.2411,
                "total_shots": 0.7351,
                "rating": 6.7187,
                "minutes": 19.59,
                "total_pass": 8.1302,
                "accurate_pass": 7.0068,
                "duels_won": 1.4043,
                "total_long_balls": 0.9417,
                "accurate_long_balls": 0.6608,
                "total_own_half_passes": 2.0651,
                "accurate_own_half_passes": 2.0651,
                "total_opp_half_passes": 6.0651,
                "accurate_opp_half_passes": 4.9417,
                "crosses_total": 2.2313,
                "crosses_accurate": 0.6696,
                "touches": 15.3188,
                "possession_lost": 3.5773,
                "dispossessed": 0.0,
                "duels_lost": 1.6113,
                "aerial_won": 0.2809,
                "aerial_lost": 0.0,
                "interceptions": 0.6113,
                "tackles_won": 0.2808,
                "tackles": 0.5617,
                "clearances": 0.0,
                "total_contest": 0.8921,
                "won_contest": 0.0,
                "challenges_lost": 0.3304,
                "fouls": 0.7191,
                "fouls_drawn": 0.5617,
                "blocks": 0.0,
                "big_chances_created": 0.3887,
                "big_chances_missed": 0.0,
                "xgot": 0.0236,
                "ball_carries": 5.6268,
                "total_progression": 17.5558,
                "progressive_carries": 1.0,
                "shots_off_target": 0.4939
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-04-27",
                    "opponent": "Levante UD",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1659,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "FC Barcelona",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.141,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-04",
                    "opponent": "Real Betis",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.1199,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Getafe",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-03-09",
                    "opponent": "Real Oviedo",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-02-21",
                    "opponent": "Atlético Madrid",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0736,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-02-14",
                    "opponent": "Celta Vigo",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-09",
                    "opponent": "Villarreal",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.0532,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 0.0,
                  "totalShots": 1.1887,
                  "creative_index": 0.4244,
                  "expectedGoals": 0.0494,
                  "expectedAssists": 0.1221,
                  "totalOppositionHalfPasses": 8.2525
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6718746423721313,
                    "model_output": 0.6719,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3665
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0483
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0377
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.022
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.021
                        }
                      ],
                      "others": 0.0631,
                      "total": 0.6719,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.53054
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.0883
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.063867
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.036708
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.035096
                        }
                      ],
                      "others_margin": 0.098528
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07806756347417831,
                    "model_output": 0.0781,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.035
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0123
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.007
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0033
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0034
                        }
                      ],
                      "others": 0.0022,
                      "total": 0.0781,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.530158
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.219726
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.107008
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.046322
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.046236
                        }
                      ],
                      "others_margin": 0.026464
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0845869705080986,
                    "model_output": 0.0846,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0199
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0076
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0057
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0042
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.004
                        }
                      ],
                      "others": 0.0064,
                      "total": 0.0846,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.26593
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.110773
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.075288
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.055146
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.05256
                        }
                      ],
                      "others_margin": 0.077316
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05661642551422119,
                    "model_output": 0.0566,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0397
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0053
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0053
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0057
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0036
                        }
                      ],
                      "others": 0.0028,
                      "total": 0.0566,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.568621
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.108333
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.10739
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.105332
                        },
                        {
                          "name": "goals",
                          "margin": -0.064575
                        }
                      ],
                      "others_margin": 0.049529
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08595152199268341,
                    "model_output": 0.086,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0388
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0148
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.005
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0037
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0036
                        }
                      ],
                      "others": 0.0027,
                      "total": 0.086,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.525634
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.233317
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.067863
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.047139
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.044058
                        }
                      ],
                      "others_margin": 0.033316
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.241114541888237,
                    "model_output": 0.2411,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1496
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0363
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0181
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0127
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0076
                        }
                      ],
                      "others": 0.0231,
                      "total": 0.2411,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.634662
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.19487
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.084703
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.058552
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.035284
                        }
                      ],
                      "others_margin": 0.100645
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7350592613220215,
                    "model_output": 0.7351,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4847
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1373
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0445
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0359
                        },
                        {
                          "name": "history_matches",
                          "contribution": -0.0276
                        }
                      ],
                      "others": 0.0456,
                      "total": 0.7351,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.484744
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.137253
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.044451
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.03595
                        },
                        {
                          "name": "history_matches",
                          "margin": -0.027584
                        }
                      ],
                      "others_margin": 0.045625
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.718691825866699,
                    "model_output": 6.7187,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0808
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0309
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0294
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0145
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0121
                        }
                      ],
                      "others": 0.0022,
                      "total": 6.7187,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.080798
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.030934
                        },
                        {
                          "name": "rating",
                          "margin": -0.029374
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.014523
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.012094
                        }
                      ],
                      "others_margin": 0.002173
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 9,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9978, quality 0.484)",
              "stats": {
                "key_pass": 0.6704,
                "expected_assists": 0.0779,
                "assists": 0.0844,
                "assist_rate": 0.0844,
                "expected_goals": 0.0565,
                "goals": 0.0858,
                "goal_rate": 0.0858,
                "shots_on_target": 0.2406,
                "total_shots": 0.7334,
                "rating": 6.7187,
                "minutes": 19.59,
                "total_pass": 8.1123,
                "accurate_pass": 6.9914,
                "duels_won": 1.4012,
                "total_long_balls": 0.9396,
                "accurate_long_balls": 0.6593,
                "total_own_half_passes": 2.0606,
                "accurate_own_half_passes": 2.0606,
                "total_opp_half_passes": 6.0518,
                "accurate_opp_half_passes": 4.9308,
                "crosses_total": 2.2264,
                "crosses_accurate": 0.6681,
                "touches": 15.2851,
                "possession_lost": 3.5694,
                "dispossessed": 0.0,
                "duels_lost": 1.6078,
                "aerial_won": 0.2803,
                "aerial_lost": 0.0,
                "interceptions": 0.61,
                "tackles_won": 0.2802,
                "tackles": 0.5605,
                "clearances": 0.0,
                "total_contest": 0.8901,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.7175,
                "fouls_drawn": 0.5605,
                "blocks": 0.0,
                "big_chances_created": 0.3878,
                "big_chances_missed": 0.0,
                "xgot": 0.0235,
                "ball_carries": 5.6144,
                "total_progression": 17.5172,
                "progressive_carries": 0.9978,
                "shots_off_target": 0.4928
              },
              "params": {
                "market_value_eur": 6800000,
                "quality_factor": 0.4842,
                "boost_factor": 0.9978,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.6 to 22.2 expected minutes (appearance prob 0.51)",
              "stats": {
                "key_pass": 0.7583,
                "expected_assists": 0.0881,
                "assists": 0.0955,
                "assist_rate": 0.0955,
                "expected_goals": 0.0639,
                "goals": 0.097,
                "goal_rate": 0.097,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0266,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16
              },
              "params": {
                "expected_minutes": 22.16,
                "projection_minutes": 19.59,
                "minutes_scale": 1.1311,
                "appearance_probability": 0.507
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.7583,
                "expected_assists": 0.0881,
                "assists": 0.0955,
                "assist_rate": 0.0955,
                "expected_goals": 0.0639,
                "goals": 0.097,
                "goal_rate": 0.097,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0266,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16
              },
              "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.7583,
                "expected_assists": 0.0881,
                "assist_rate": 0.0955,
                "assists": 0,
                "expected_goals": 0.0639,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0266,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "key_pass": 0.7583,
                "expected_assists": 0.0491,
                "assist_rate": 0.0955,
                "assists": 0,
                "expected_goals": 0.0383,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0159,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.0536
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 0.507
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0639,
                  "after": 0.0383
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0881,
                  "after": 0.0491
                }
              ]
            },
            {
              "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": {
                "key_pass": 0.7583,
                "expected_assists": 0.0491,
                "assist_rate": 0.0955,
                "assists": 0,
                "expected_goals": 0.0383,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0159,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.0536,
                "fifa_overall": 72.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": 4446,
                "fifa_rank": 4144.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.7583,
                "expected_assists": 0.0491,
                "assist_rate": 0.0955,
                "assists": 0,
                "expected_goals": 0.0383,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0159,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0369,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.0536,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0369,
                "goal_rate": 0.097,
                "scorer_weight": 0.0479,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0363,
                "finishing_factor": 1.25,
                "appearance_weight": 0.507,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.7583,
                "expected_assists": 0.0491,
                "assist_rate": 0.0955,
                "assists": 0,
                "expected_goals": 0.0383,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0159,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0369,
                "projected_assists": 0,
                "assist_probability": 0.0468,
                "finishing_factor": 1.25,
                "creation_factor": 1.0536,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0468,
                "assist_rate": 0.0955,
                "provider_weight": 0.0517,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0569,
                "creation_factor": 1.0536,
                "appearance_weight": 0.507,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Tyrhys Dolan": {
          "player_id": 1063015,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 170,
          "market_value": 10800000,
          "stats": {
            "expected_goals": 0.0176,
            "goal_rate": 0.0529,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0154,
            "key_pass": 0,
            "rating": 6.6329,
            "minutes": 26,
            "total_pass": 9,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 5.4622,
            "dispossessed": 0.1109,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0151,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 17,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.342,
            "bench_expected_minutes": 25.67,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 1.95,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0172,
            "projected_assists": 0,
            "assist_probability": 0.0151,
            "finishing_factor": 1.1005,
            "creation_factor": 0.8,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 14,
                "rating": 6.5,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1113,
                "expected_assists": 0.0087,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 9,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 82,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0762,
                "expected_assists": 0.0216,
                "total_shots": 1,
                "total_pass": 19,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 23,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1388,
                "expected_assists": 0.0858,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 66,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1573,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 11,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0118,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 83,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1341,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 15,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1023,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 18,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 81,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2108,
                "expected_assists": 0.0398,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 24,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "duels_won": 2,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083719,
              "match_date": "2026-05-23",
              "home_team": "Espanyol",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1364,
                "expected_assists": 0.0032,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 10,
                "accurate_pass": 9,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 76,
                "rating": 7.1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.5799,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 9,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3488,
            "combined_rank_score": 1474.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 52.0,
            "sofascore_rating": 7.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2897.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6329,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tyrhys Dolan",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Leandro González Pírez",
                  "ranking": 3483
                },
                {
                  "player_name": "Mahdi Camara",
                  "ranking": 3484
                },
                {
                  "player_name": "Saud Abdulhamid",
                  "ranking": 3485
                },
                {
                  "player_name": "Orel Mangala",
                  "ranking": 3486
                },
                {
                  "player_name": "Lassine Sinayoko",
                  "ranking": 3487
                }
              ],
              "lower": [
                {
                  "player_name": "Yann Gboho",
                  "ranking": 3489
                },
                {
                  "player_name": "Ansu Fati",
                  "ranking": 3490
                },
                {
                  "player_name": "Marcus Edwards",
                  "ranking": 3491
                },
                {
                  "player_name": "Ismaël Doukouré",
                  "ranking": 3492
                },
                {
                  "player_name": "Unai Marrero",
                  "ranking": 3493
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.778,
          "history_matches": 44,
          "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": 44,
            "data_confidence": 0.778,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 25.665977174234964,
            "bench_appearance_prob": 0.342,
            "market_value_adjustment": 1.0008,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.35714285714285715,
              "assists_per90": 0.0,
              "prior_reliability": 0.1867
            },
            "rationale": "Bench projection scaled from XGBoost F_service (44 historical appearances) to 25.7 expected mins (appearance prob 0.34); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0471,
                "goals": 0.0565,
                "goal_rate": 0.0565,
                "shots_on_target": 0.2047,
                "total_shots": 0.556,
                "expected_assists": 0.0446,
                "key_pass": 0.4358,
                "rating": 6.6329,
                "minutes": 27.82,
                "total_pass": 9.8932,
                "accurate_pass": 8.0517,
                "duels_won": 2.0692,
                "total_long_balls": 0.1656,
                "accurate_long_balls": 0.0509,
                "total_opp_half_passes": 6.8759,
                "accurate_opp_half_passes": 5.5194,
                "crosses_total": 2.063,
                "crosses_accurate": 0.2453,
                "touches": 19.5307,
                "possession_lost": 5.9159,
                "dispossessed": 0.1108,
                "duels_lost": 1.8684,
                "aerial_lost": 0.4954,
                "total_contest": 1.0425,
                "won_contest": 0.4198,
                "ball_recovery": 1.8022,
                "challenges_lost": 0.4104,
                "fouls": 0.2891,
                "fouls_drawn": 0.5376,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4122,
                "tackles_won": 0.5394,
                "tackles": 0.8317,
                "clearances": 0.3217,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0509,
                "xgot": 0.0405,
                "offsides": 0.1825,
                "ball_carries": 5.9864,
                "total_progression": 18.792,
                "progressive_carries": 0.696,
                "shots_off_target": 0.3513
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.1501,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Real Sociedad",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Osasuna",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0696,
                  "accuratePass": 12.9556,
                  "totalOppositionHalfPasses": 9.6195,
                  "accurateOppositionHalfPasses": 8.2106,
                  "totalShots": 0.9393
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04711058363318443,
                    "model_output": 0.0471,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0895
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0174
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0061
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0049
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.0265,
                      "total": 0.0471,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.610201
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.178103
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.07073
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.061352
                        },
                        {
                          "name": "goals",
                          "margin": -0.058038
                        }
                      ],
                      "others_margin": -0.446875
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05651402473449707,
                    "model_output": 0.0565,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0915
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0112
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0079
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0059
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.0228,
                      "total": 0.0565,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.609548
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.108457
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.083872
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.067446
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.057053
                        }
                      ],
                      "others_margin": -0.339831
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.20468662679195404,
                    "model_output": 0.2047,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2087
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0271
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0216
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0159
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0132
                        }
                      ],
                      "others": -0.041,
                      "total": 0.2047,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.497737
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.087625
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.075784
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.059524
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.052217
                        }
                      ],
                      "others_margin": -0.182616
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5559530854225159,
                    "model_output": 0.556,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5173
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1207
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0327
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.023
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0212
                        }
                      ],
                      "others": -0.1093,
                      "total": 0.556,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.51727
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.120726
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.032741
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.022981
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.021217
                        }
                      ],
                      "others_margin": -0.109263
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04460413008928299,
                    "model_output": 0.0446,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0201
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0035
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0027
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0024
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0012
                        }
                      ],
                      "others": 0.0008,
                      "total": 0.0446,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.375503
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.076737
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.059049
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.054958
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.026843
                        }
                      ],
                      "others_margin": 0.020074
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.4357838034629822,
                    "model_output": 0.4358,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2637
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0221
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0183
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0171
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0113
                        }
                      ],
                      "others": 0.0148,
                      "total": 0.4358,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.484383
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.05093
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.04186
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.040895
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.027144
                        }
                      ],
                      "others_margin": 0.03426
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6328935623168945,
                    "model_output": 6.6329,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0616
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.017
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0151
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0132
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0128
                        }
                      ],
                      "others": -0.0446,
                      "total": 6.6329,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.061605
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.016967
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.015136
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.01317
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.012848
                        }
                      ],
                      "others_margin": -0.044565
                    }
                  }
                ],
                "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.0008, quality 0.532)",
              "stats": {
                "expected_goals": 0.0471,
                "goals": 0.0566,
                "goal_rate": 0.0566,
                "shots_on_target": 0.2049,
                "total_shots": 0.5565,
                "expected_assists": 0.0446,
                "key_pass": 0.4361,
                "rating": 6.6329,
                "minutes": 27.82,
                "total_pass": 9.9011,
                "accurate_pass": 8.0581,
                "duels_won": 2.0709,
                "total_long_balls": 0.1657,
                "accurate_long_balls": 0.0509,
                "total_opp_half_passes": 6.8814,
                "accurate_opp_half_passes": 5.5238,
                "crosses_total": 2.0647,
                "crosses_accurate": 0.2455,
                "touches": 19.5463,
                "possession_lost": 5.9206,
                "dispossessed": 0.1109,
                "duels_lost": 1.8699,
                "aerial_lost": 0.4958,
                "total_contest": 1.0433,
                "won_contest": 0.4201,
                "ball_recovery": 1.8036,
                "challenges_lost": 0.4107,
                "fouls": 0.2893,
                "fouls_drawn": 0.538,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4125,
                "tackles_won": 0.5398,
                "tackles": 0.8324,
                "clearances": 0.322,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0509,
                "xgot": 0.0405,
                "offsides": 0.1826,
                "ball_carries": 5.9912,
                "total_progression": 18.807,
                "progressive_carries": 0.6966,
                "shots_off_target": 0.3516
              },
              "params": {
                "market_value_eur": 10800000,
                "quality_factor": 0.5318,
                "boost_factor": 1.0008,
                "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.0124)",
              "stats": {
                "expected_goals": 0.0471,
                "goals": 0.0573,
                "goal_rate": 0.0573,
                "shots_on_target": 0.2037,
                "total_shots": 0.5551,
                "expected_assists": 0.0446,
                "key_pass": 0.4361,
                "rating": 6.6329,
                "minutes": 27.82,
                "total_pass": 9.9011,
                "accurate_pass": 8.0581,
                "duels_won": 2.0709,
                "total_long_balls": 0.1657,
                "accurate_long_balls": 0.0509,
                "total_opp_half_passes": 6.8814,
                "accurate_opp_half_passes": 5.5238,
                "crosses_total": 2.0501,
                "crosses_accurate": 0.2455,
                "touches": 19.5463,
                "possession_lost": 5.9206,
                "dispossessed": 0.1109,
                "duels_lost": 1.8699,
                "aerial_lost": 0.4958,
                "total_contest": 1.0433,
                "won_contest": 0.4201,
                "ball_recovery": 1.8036,
                "challenges_lost": 0.4107,
                "fouls": 0.2926,
                "fouls_drawn": 0.5368,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4142,
                "tackles_won": 0.5358,
                "tackles": 0.8324,
                "clearances": 0.322,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0509,
                "xgot": 0.0405,
                "offsides": 0.1817,
                "ball_carries": 5.9912,
                "total_progression": 18.807,
                "progressive_carries": 0.6966,
                "shots_off_target": 0.3516
              },
              "params": {
                "blend_weight": 0.0124,
                "history_matches": 44,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.3091,
                "prior_reliability": 0.1867,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.0647,
                  "after": 2.0501
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 27.8 to 25.7 expected minutes (appearance prob 0.34)",
              "stats": {
                "expected_goals": 0.0435,
                "goals": 0.0529,
                "goal_rate": 0.0529,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0411,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0374,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67
              },
              "params": {
                "expected_minutes": 25.67,
                "projection_minutes": 27.82,
                "minutes_scale": 0.9226,
                "appearance_probability": 0.342
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0435,
                "goals": 0.0529,
                "goal_rate": 0.0529,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0411,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0374,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67
              },
              "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.0435,
                "goal_rate": 0.0529,
                "goals": 0,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0411,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0374,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "expected_goals": 0.0176,
                "goal_rate": 0.0529,
                "goals": 0,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0154,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0151,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.1005,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 0.342
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0435,
                  "after": 0.0176
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0411,
                  "after": 0.0154
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 74.0)",
              "stats": {
                "expected_goals": 0.0176,
                "goal_rate": 0.0529,
                "goals": 0,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0154,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0151,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.1005,
                "creation_factor": 0.8,
                "fifa_overall": 74.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": 3488,
                "fifa_rank": 2897.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0176,
                "goal_rate": 0.0529,
                "goals": 0,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0154,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0151,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0172,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1005,
                "creation_factor": 0.8,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0172,
                "goal_rate": 0.0529,
                "scorer_weight": 0.0194,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0147,
                "finishing_factor": 1.1005,
                "appearance_weight": 0.342,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.0176,
                "goal_rate": 0.0529,
                "goals": 0,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0154,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0151,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0172,
                "projected_assists": 0,
                "assist_probability": 0.0151,
                "finishing_factor": 1.1005,
                "creation_factor": 0.8,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0151,
                "assist_rate": 0.0,
                "provider_weight": 0.0123,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0136,
                "creation_factor": 0.8,
                "appearance_weight": 0.342,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Javi Puado": {
          "player_id": 891511,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 7,
          "height": 178,
          "market_value": 7000000,
          "stats": {
            "expected_goals": 0.0655,
            "goal_rate": 0.1046,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0262,
            "key_pass": 0,
            "rating": 6.6094,
            "minutes": 25,
            "total_pass": 5,
            "accurate_pass": 5,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 7,
            "possession_lost": 1.8567,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 1,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.568,
            "bench_expected_minutes": 25.49,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 1.95,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0619,
            "projected_assists": 0,
            "assist_probability": 0.0256,
            "finishing_factor": 1.0481,
            "creation_factor": 0.8,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 4,
                "accurate_pass": 4,
                "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": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0079,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083222,
              "match_date": "2026-01-11",
              "home_team": "Levante UD",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 4,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083203,
              "match_date": "2026-01-03",
              "home_team": "Espanyol",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083635,
              "match_date": "2025-10-05",
              "home_team": "Espanyol",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.168,
                "expected_assists": 0.1238,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 47,
                "accurate_pass": 40,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083595,
              "match_date": "2025-09-26",
              "home_team": "Girona FC",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 75,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0325,
                "expected_assists": 0.1577,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 17,
                "accurate_pass": 17,
                "key_pass": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083407,
              "match_date": "2025-09-23",
              "home_team": "Espanyol",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.2083,
                "expected_assists": 0.2352,
                "total_shots": 5,
                "shots_on_target": 3,
                "shots_off_target": 2,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083333,
              "match_date": "2025-09-20",
              "home_team": "Real Madrid",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 77,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1166,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083234,
              "match_date": "2025-09-15",
              "home_team": "Espanyol",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 72,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0834,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 16,
                "key_pass": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083138,
              "match_date": "2025-08-31",
              "home_team": "Espanyol",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 84,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.161,
                "expected_assists": 0.0426,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 18,
                "key_pass": 2,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2281,
            "combined_rank_score": 901.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 834.0,
            "sofascore_rating": 6.5889,
            "sofascore_appearances": 10.0,
            "fifa_rank": 968.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6094,
            "source_file": "data/player_rankings.csv",
            "player_name": "Javi Puado",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yves Bissouma",
                  "ranking": 2276
                },
                {
                  "player_name": "Nuriddin  Nuriddinov",
                  "ranking": 2277
                },
                {
                  "player_name": "Kim Min-Ho",
                  "ranking": 2278
                },
                {
                  "player_name": "Manuel Ugarte",
                  "ranking": 2279
                },
                {
                  "player_name": "Endrick",
                  "ranking": 2280
                }
              ],
              "lower": [
                {
                  "player_name": "Bekhruz Jumatov",
                  "ranking": 2282
                },
                {
                  "player_name": "Odilon Kossounou",
                  "ranking": 2283
                },
                {
                  "player_name": "Lennart Karl",
                  "ranking": 2284
                },
                {
                  "player_name": "André",
                  "ranking": 2285
                },
                {
                  "player_name": "Tim Payne",
                  "ranking": 2286
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 12,
          "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": 12,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.48700561251263,
            "bench_appearance_prob": 0.5675911642051195,
            "market_value_adjustment": 0.9984,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (12 historical appearances) to 25.5 expected mins (appearance prob 0.57)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0651,
                "goals": 0.0698,
                "goal_rate": 0.0698,
                "shots_on_target": 0.224,
                "total_shots": 0.5215,
                "expected_assists": 0.0281,
                "key_pass": 0.3142,
                "rating": 6.6094,
                "minutes": 12.65,
                "total_pass": 3.3598,
                "accurate_pass": 3.1671,
                "duels_won": 0.1927,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6206,
                "accurate_opp_half_passes": 1.4279,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 4.9134,
                "possession_lost": 1.2398,
                "dispossessed": 0.0,
                "duels_lost": 2.0,
                "aerial_lost": 0.7262,
                "total_contest": 0.7333,
                "won_contest": 0.1927,
                "ball_recovery": 0.2667,
                "challenges_lost": 0.0,
                "fouls": 0.7333,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.1587,
                "total_progression": 0.5863,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2975
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.1749,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1486,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-01-11",
                    "opponent": "Levante UD",
                    "minutes": 4.0,
                    "is_starting": false,
                    "weight": 0.1263,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "FC Barcelona",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1074,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-10-05",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0913,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2025-09-26",
                    "opponent": "Girona FC",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0776,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2025-09-23",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.066,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2025-09-20",
                    "opponent": "Real Madrid",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0561,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-09-15",
                    "opponent": "Mallorca",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0477,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2025-08-31",
                    "opponent": "Osasuna",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0405,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 12.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.2264,
                  "accuratePass": 11.3435,
                  "totalOppositionHalfPasses": 8.5356,
                  "accurateOppositionHalfPasses": 6.9746,
                  "totalShots": 0.9456
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06513677537441254,
                    "model_output": 0.0651,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0984
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0151
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0082
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0074
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0062
                        }
                      ],
                      "others": -0.0257,
                      "total": 0.0651,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.697316
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.144232
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.075221
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.073473
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": -0.066447
                        }
                      ],
                      "others_margin": -0.333083
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06976871937513351,
                    "model_output": 0.0698,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0963
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0142
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0091
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0073
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0055
                        }
                      ],
                      "others": -0.0165,
                      "total": 0.0698,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.654175
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.146273
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.096476
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.076487
                        },
                        {
                          "name": "goals",
                          "margin": -0.061956
                        }
                      ],
                      "others_margin": -0.213095
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.22395823895931244,
                    "model_output": 0.224,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2355
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0221
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0156
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.009
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0088
                        }
                      ],
                      "others": -0.0352,
                      "total": 0.224,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.584337
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.077244
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.058618
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.033989
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.033417
                        }
                      ],
                      "others_margin": -0.145897
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5214494466781616,
                    "model_output": 0.5214,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5217
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1183
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.045
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0357
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0306
                        }
                      ],
                      "others": -0.1687,
                      "total": 0.5214,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.521708
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.118254
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.044996
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.035714
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.030616
                        }
                      ],
                      "others_margin": -0.168645
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.028061838820576668,
                    "model_output": 0.0281,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0173
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0039
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0032
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0025
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0024
                        }
                      ],
                      "others": -0.0117,
                      "total": 0.0281,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.312482
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.087298
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.076177
                        },
                        {
                          "name": "rating",
                          "margin": -0.065454
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.062496
                        }
                      ],
                      "others_margin": -0.350356
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3142184317111969,
                    "model_output": 0.3142,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2666
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0238
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0171
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0161
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0136
                        }
                      ],
                      "others": -0.0353,
                      "total": 0.3142,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.491479
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.058215
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.044176
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.043281
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.038228
                        }
                      ],
                      "others_margin": -0.106484
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.609364986419678,
                    "model_output": 6.6094,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0538
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0309
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0133
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0092
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0079
                        }
                      ],
                      "others": -0.0463,
                      "total": 6.6094,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.053785
                        },
                        {
                          "name": "rating",
                          "margin": -0.030939
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013294
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.009188
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.007861
                        }
                      ],
                      "others_margin": -0.046411
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 12,
                  "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 0.9984, quality 0.487)",
              "stats": {
                "expected_goals": 0.065,
                "goals": 0.0697,
                "goal_rate": 0.0697,
                "shots_on_target": 0.2236,
                "total_shots": 0.5206,
                "expected_assists": 0.028,
                "key_pass": 0.3137,
                "rating": 6.6094,
                "minutes": 12.65,
                "total_pass": 3.3544,
                "accurate_pass": 3.162,
                "duels_won": 0.1924,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.618,
                "accurate_opp_half_passes": 1.4256,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 4.9055,
                "possession_lost": 1.2378,
                "dispossessed": 0.0,
                "duels_lost": 1.9968,
                "aerial_lost": 0.725,
                "total_contest": 0.7321,
                "won_contest": 0.1924,
                "ball_recovery": 0.2663,
                "challenges_lost": 0.0,
                "fouls": 0.7321,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.1552,
                "total_progression": 0.5854,
                "progressive_carries": 0.0,
                "shots_off_target": 0.297
              },
              "params": {
                "market_value_eur": 7000000,
                "quality_factor": 0.4866,
                "boost_factor": 0.9984,
                "reference_quality": 0.505,
                "history_matches": 12,
                "history_shrink": 0.2941,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 12.7 to 25.5 expected minutes (appearance prob 0.57)",
              "stats": {
                "expected_goals": 0.0975,
                "goals": 0.1046,
                "goal_rate": 0.1046,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.042,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49
              },
              "params": {
                "expected_minutes": 25.49,
                "projection_minutes": 12.65,
                "minutes_scale": 1.5,
                "appearance_probability": 0.568
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0975,
                "goals": 0.1046,
                "goal_rate": 0.1046,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.042,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49
              },
              "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.0975,
                "goal_rate": 0.1046,
                "goals": 0,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.042,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "expected_goals": 0.0655,
                "goal_rate": 0.1046,
                "goals": 0,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.0262,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.0481,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 0.568
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0975,
                  "after": 0.0655
                },
                {
                  "stat": "expected_assists",
                  "before": 0.042,
                  "after": 0.0262
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 79.0)",
              "stats": {
                "expected_goals": 0.0655,
                "goal_rate": 0.1046,
                "goals": 0,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.0262,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.0481,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 2281,
                "fifa_rank": 968.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0655,
                "goal_rate": 0.1046,
                "goals": 0,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.0262,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0619,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0481,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0619,
                "goal_rate": 0.1046,
                "scorer_weight": 0.0687,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0521,
                "finishing_factor": 1.0481,
                "appearance_weight": 0.568,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.0655,
                "goal_rate": 0.1046,
                "goals": 0,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.0262,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0619,
                "projected_assists": 0,
                "assist_probability": 0.0256,
                "finishing_factor": 1.0481,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0256,
                "assist_rate": 0.0,
                "provider_weight": 0.021,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0231,
                "creation_factor": 0.8,
                "appearance_weight": 0.568,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Javi Puado": {
          "player_id": 891511,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 7,
          "height": 178,
          "market_value": 7000000,
          "stats": {
            "expected_goals": 0.0655,
            "goal_rate": 0.1046,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0262,
            "key_pass": 0,
            "rating": 6.6094,
            "minutes": 25,
            "total_pass": 5,
            "accurate_pass": 5,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 7,
            "possession_lost": 1.8567,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 1,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.568,
            "bench_expected_minutes": 25.49,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 1.95,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0619,
            "projected_assists": 0,
            "assist_probability": 0.0256,
            "finishing_factor": 1.0481,
            "creation_factor": 0.8,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "total_pass": 4,
                "accurate_pass": 4,
                "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": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421071,
              "match_date": "2026-10-17",
              "home_team": "Espanyol",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0079,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083222,
              "match_date": "2026-01-11",
              "home_team": "Levante UD",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 4,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083203,
              "match_date": "2026-01-03",
              "home_team": "Espanyol",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083635,
              "match_date": "2025-10-05",
              "home_team": "Espanyol",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.168,
                "expected_assists": 0.1238,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 47,
                "accurate_pass": 40,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083595,
              "match_date": "2025-09-26",
              "home_team": "Girona FC",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 75,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0325,
                "expected_assists": 0.1577,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 17,
                "accurate_pass": 17,
                "key_pass": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083407,
              "match_date": "2025-09-23",
              "home_team": "Espanyol",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.2083,
                "expected_assists": 0.2352,
                "total_shots": 5,
                "shots_on_target": 3,
                "shots_off_target": 2,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083333,
              "match_date": "2025-09-20",
              "home_team": "Real Madrid",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 77,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1166,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083234,
              "match_date": "2025-09-15",
              "home_team": "Espanyol",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 72,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0834,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 16,
                "key_pass": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083138,
              "match_date": "2025-08-31",
              "home_team": "Espanyol",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 84,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.161,
                "expected_assists": 0.0426,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 18,
                "key_pass": 2,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2281,
            "combined_rank_score": 901.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 834.0,
            "sofascore_rating": 6.5889,
            "sofascore_appearances": 10.0,
            "fifa_rank": 968.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6094,
            "source_file": "data/player_rankings.csv",
            "player_name": "Javi Puado",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yves Bissouma",
                  "ranking": 2276
                },
                {
                  "player_name": "Nuriddin  Nuriddinov",
                  "ranking": 2277
                },
                {
                  "player_name": "Kim Min-Ho",
                  "ranking": 2278
                },
                {
                  "player_name": "Manuel Ugarte",
                  "ranking": 2279
                },
                {
                  "player_name": "Endrick",
                  "ranking": 2280
                }
              ],
              "lower": [
                {
                  "player_name": "Bekhruz Jumatov",
                  "ranking": 2282
                },
                {
                  "player_name": "Odilon Kossounou",
                  "ranking": 2283
                },
                {
                  "player_name": "Lennart Karl",
                  "ranking": 2284
                },
                {
                  "player_name": "André",
                  "ranking": 2285
                },
                {
                  "player_name": "Tim Payne",
                  "ranking": 2286
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 12,
          "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": 12,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.48700561251263,
            "bench_appearance_prob": 0.5675911642051195,
            "market_value_adjustment": 0.9984,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (12 historical appearances) to 25.5 expected mins (appearance prob 0.57)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0651,
                "goals": 0.0698,
                "goal_rate": 0.0698,
                "shots_on_target": 0.224,
                "total_shots": 0.5215,
                "expected_assists": 0.0281,
                "key_pass": 0.3142,
                "rating": 6.6094,
                "minutes": 12.65,
                "total_pass": 3.3598,
                "accurate_pass": 3.1671,
                "duels_won": 0.1927,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6206,
                "accurate_opp_half_passes": 1.4279,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 4.9134,
                "possession_lost": 1.2398,
                "dispossessed": 0.0,
                "duels_lost": 2.0,
                "aerial_lost": 0.7262,
                "total_contest": 0.7333,
                "won_contest": 0.1927,
                "ball_recovery": 0.2667,
                "challenges_lost": 0.0,
                "fouls": 0.7333,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.1587,
                "total_progression": 0.5863,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2975
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.1749,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1486,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-01-11",
                    "opponent": "Levante UD",
                    "minutes": 4.0,
                    "is_starting": false,
                    "weight": 0.1263,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "FC Barcelona",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1074,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-10-05",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0913,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2025-09-26",
                    "opponent": "Girona FC",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0776,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2025-09-23",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.066,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2025-09-20",
                    "opponent": "Real Madrid",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0561,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-09-15",
                    "opponent": "Mallorca",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0477,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2025-08-31",
                    "opponent": "Osasuna",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0405,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 12.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.2264,
                  "accuratePass": 11.3435,
                  "totalOppositionHalfPasses": 8.5356,
                  "accurateOppositionHalfPasses": 6.9746,
                  "totalShots": 0.9456
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06513677537441254,
                    "model_output": 0.0651,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0984
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0151
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0082
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0074
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0062
                        }
                      ],
                      "others": -0.0257,
                      "total": 0.0651,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.697316
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.144232
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.075221
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.073473
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": -0.066447
                        }
                      ],
                      "others_margin": -0.333083
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06976871937513351,
                    "model_output": 0.0698,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0963
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0142
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0091
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0073
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0055
                        }
                      ],
                      "others": -0.0165,
                      "total": 0.0698,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.654175
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.146273
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.096476
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.076487
                        },
                        {
                          "name": "goals",
                          "margin": -0.061956
                        }
                      ],
                      "others_margin": -0.213095
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.22395823895931244,
                    "model_output": 0.224,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2355
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0221
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0156
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.009
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0088
                        }
                      ],
                      "others": -0.0352,
                      "total": 0.224,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.584337
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.077244
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.058618
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.033989
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.033417
                        }
                      ],
                      "others_margin": -0.145897
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5214494466781616,
                    "model_output": 0.5214,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5217
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1183
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.045
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0357
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0306
                        }
                      ],
                      "others": -0.1687,
                      "total": 0.5214,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.521708
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.118254
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.044996
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.035714
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.030616
                        }
                      ],
                      "others_margin": -0.168645
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.028061838820576668,
                    "model_output": 0.0281,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0173
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0039
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0032
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0025
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0024
                        }
                      ],
                      "others": -0.0117,
                      "total": 0.0281,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.312482
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.087298
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.076177
                        },
                        {
                          "name": "rating",
                          "margin": -0.065454
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.062496
                        }
                      ],
                      "others_margin": -0.350356
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3142184317111969,
                    "model_output": 0.3142,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2666
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0238
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0171
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0161
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0136
                        }
                      ],
                      "others": -0.0353,
                      "total": 0.3142,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.491479
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.058215
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.044176
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.043281
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.038228
                        }
                      ],
                      "others_margin": -0.106484
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.609364986419678,
                    "model_output": 6.6094,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0538
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0309
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0133
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0092
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0079
                        }
                      ],
                      "others": -0.0463,
                      "total": 6.6094,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.053785
                        },
                        {
                          "name": "rating",
                          "margin": -0.030939
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013294
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.009188
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.007861
                        }
                      ],
                      "others_margin": -0.046411
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 12,
                  "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 0.9984, quality 0.487)",
              "stats": {
                "expected_goals": 0.065,
                "goals": 0.0697,
                "goal_rate": 0.0697,
                "shots_on_target": 0.2236,
                "total_shots": 0.5206,
                "expected_assists": 0.028,
                "key_pass": 0.3137,
                "rating": 6.6094,
                "minutes": 12.65,
                "total_pass": 3.3544,
                "accurate_pass": 3.162,
                "duels_won": 0.1924,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.618,
                "accurate_opp_half_passes": 1.4256,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 4.9055,
                "possession_lost": 1.2378,
                "dispossessed": 0.0,
                "duels_lost": 1.9968,
                "aerial_lost": 0.725,
                "total_contest": 0.7321,
                "won_contest": 0.1924,
                "ball_recovery": 0.2663,
                "challenges_lost": 0.0,
                "fouls": 0.7321,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.1552,
                "total_progression": 0.5854,
                "progressive_carries": 0.0,
                "shots_off_target": 0.297
              },
              "params": {
                "market_value_eur": 7000000,
                "quality_factor": 0.4866,
                "boost_factor": 0.9984,
                "reference_quality": 0.505,
                "history_matches": 12,
                "history_shrink": 0.2941,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 12.7 to 25.5 expected minutes (appearance prob 0.57)",
              "stats": {
                "expected_goals": 0.0975,
                "goals": 0.1046,
                "goal_rate": 0.1046,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.042,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49
              },
              "params": {
                "expected_minutes": 25.49,
                "projection_minutes": 12.65,
                "minutes_scale": 1.5,
                "appearance_probability": 0.568
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0975,
                "goals": 0.1046,
                "goal_rate": 0.1046,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.042,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49
              },
              "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.0975,
                "goal_rate": 0.1046,
                "goals": 0,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.042,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "expected_goals": 0.0655,
                "goal_rate": 0.1046,
                "goals": 0,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.0262,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.0481,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 0.568
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0975,
                  "after": 0.0655
                },
                {
                  "stat": "expected_assists",
                  "before": 0.042,
                  "after": 0.0262
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 79.0)",
              "stats": {
                "expected_goals": 0.0655,
                "goal_rate": 0.1046,
                "goals": 0,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.0262,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.0481,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 2281,
                "fifa_rank": 968.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0655,
                "goal_rate": 0.1046,
                "goals": 0,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.0262,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0619,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0481,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0619,
                "goal_rate": 0.1046,
                "scorer_weight": 0.0687,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0521,
                "finishing_factor": 1.0481,
                "appearance_weight": 0.568,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.0655,
                "goal_rate": 0.1046,
                "goals": 0,
                "shots_on_target": 0.3354,
                "total_shots": 0.7809,
                "expected_assists": 0.0262,
                "key_pass": 0.4705,
                "rating": 6.6094,
                "minutes": 25.49,
                "total_pass": 5.0316,
                "accurate_pass": 4.743,
                "duels_won": 0.2886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.427,
                "accurate_opp_half_passes": 2.1384,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.3582,
                "possession_lost": 1.8567,
                "dispossessed": 0.0,
                "duels_lost": 2.9952,
                "aerial_lost": 0.725,
                "total_contest": 1.0981,
                "won_contest": 0.2886,
                "ball_recovery": 0.3994,
                "challenges_lost": 0.0,
                "fouls": 1.0981,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 3.2328,
                "total_progression": 0.8781,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4455,
                "bench_appearance_probability": 0.568,
                "bench_expected_minutes": 25.49,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0619,
                "projected_assists": 0,
                "assist_probability": 0.0256,
                "finishing_factor": 1.0481,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0256,
                "assist_rate": 0.0,
                "provider_weight": 0.021,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0231,
                "creation_factor": 0.8,
                "appearance_weight": 0.568,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Cyril Ngonge": {
          "player_id": 877037,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 16,
          "height": 179,
          "market_value": 6800000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0491,
            "assist_rate": 0.0955,
            "assists": 0,
            "expected_goals": 0.0383,
            "goal_rate": 0.097,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7187,
            "minutes": 22,
            "total_pass": 9,
            "accurate_pass": 8,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 6,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 17,
            "possession_lost": 4.0372,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0159,
            "ball_carries": 6,
            "total_progression": 20,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.507,
            "bench_expected_minutes": 22.16,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 1.95,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0369,
            "projected_assists": 0,
            "assist_probability": 0.0468,
            "finishing_factor": 1.25,
            "creation_factor": 1.0536,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 14083221,
              "match_date": "2026-04-27",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 58,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0146,
                "expected_assists": 0.2677,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 14,
                "accurate_pass": 11,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083330,
              "match_date": "2026-04-23",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 12,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0848,
                "expected_assists": 0.1093,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 4,
                "key_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083113,
              "match_date": "2026-04-11",
              "home_team": "FC Barcelona",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 64,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0834,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 2,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14081811,
              "match_date": "2026-04-04",
              "home_team": "Real Betis",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 78,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0153,
                "expected_assists": 0.0016,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 8,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083673,
              "match_date": "2026-03-21",
              "home_team": "Espanyol",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Getafe",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1223,
                "expected_assists": 0.1253,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 9,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 4,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14081800,
              "match_date": "2026-03-09",
              "home_team": "Espanyol",
              "away_team": "Real Oviedo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 62,
                "rating": 6.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1511,
                "expected_assists": 0.185,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 27,
                "accurate_pass": 20,
                "key_pass": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083561,
              "match_date": "2026-02-21",
              "home_team": "Atlético Madrid",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 20,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0343,
                "expected_assists": 0.0078,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 8,
                "interceptions": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083524,
              "match_date": "2026-02-14",
              "home_team": "Espanyol",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 56,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1116,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 17,
                "key_pass": 1,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083303,
              "match_date": "2026-02-09",
              "home_team": "Villarreal",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 31,
                "rating": 7.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0491,
                "expected_assists": 0.0633,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 14,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 4446,
            "combined_rank_score": 2464.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 784.0,
            "sofascore_rating": 6.6333,
            "sofascore_appearances": 9.0,
            "fifa_rank": 4144.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7187,
            "source_file": "data/player_rankings.csv",
            "player_name": "Cyril Ngonge",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lyle Foster",
                  "ranking": 4441
                },
                {
                  "player_name": "Bruma",
                  "ranking": 4442
                },
                {
                  "player_name": "João Carvalho",
                  "ranking": 4443
                },
                {
                  "player_name": "Herman Johansson",
                  "ranking": 4444
                },
                {
                  "player_name": "Jordan Holsgrove",
                  "ranking": 4445
                }
              ],
              "lower": [
                {
                  "player_name": "Patrick Roberts",
                  "ranking": 4447
                },
                {
                  "player_name": "Yanis Begraoui",
                  "ranking": 4448
                },
                {
                  "player_name": "Vítor Carvalho",
                  "ranking": 4449
                },
                {
                  "player_name": "Pau Víctor",
                  "ranking": 4450
                },
                {
                  "player_name": "Mike Trésor",
                  "ranking": 4451
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "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.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.157394470824215,
            "bench_appearance_prob": 0.5071542941283733,
            "market_value_adjustment": 0.9978,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (9 historical appearances) to 22.2 expected mins (appearance prob 0.51)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.6719,
                "expected_assists": 0.0781,
                "assists": 0.0846,
                "assist_rate": 0.0846,
                "expected_goals": 0.0566,
                "goals": 0.086,
                "goal_rate": 0.086,
                "shots_on_target": 0.2411,
                "total_shots": 0.7351,
                "rating": 6.7187,
                "minutes": 19.59,
                "total_pass": 8.1302,
                "accurate_pass": 7.0068,
                "duels_won": 1.4043,
                "total_long_balls": 0.9417,
                "accurate_long_balls": 0.6608,
                "total_own_half_passes": 2.0651,
                "accurate_own_half_passes": 2.0651,
                "total_opp_half_passes": 6.0651,
                "accurate_opp_half_passes": 4.9417,
                "crosses_total": 2.2313,
                "crosses_accurate": 0.6696,
                "touches": 15.3188,
                "possession_lost": 3.5773,
                "dispossessed": 0.0,
                "duels_lost": 1.6113,
                "aerial_won": 0.2809,
                "aerial_lost": 0.0,
                "interceptions": 0.6113,
                "tackles_won": 0.2808,
                "tackles": 0.5617,
                "clearances": 0.0,
                "total_contest": 0.8921,
                "won_contest": 0.0,
                "challenges_lost": 0.3304,
                "fouls": 0.7191,
                "fouls_drawn": 0.5617,
                "blocks": 0.0,
                "big_chances_created": 0.3887,
                "big_chances_missed": 0.0,
                "xgot": 0.0236,
                "ball_carries": 5.6268,
                "total_progression": 17.5558,
                "progressive_carries": 1.0,
                "shots_off_target": 0.4939
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-30T10:05:30.772321+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 901,
                    "rows": 24770
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-04-27",
                    "opponent": "Levante UD",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.1952,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1659,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "FC Barcelona",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.141,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-04",
                    "opponent": "Real Betis",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.1199,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Getafe",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1019,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-03-09",
                    "opponent": "Real Oviedo",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0866,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-02-21",
                    "opponent": "Atlético Madrid",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0736,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-02-14",
                    "opponent": "Celta Vigo",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.0626,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-09",
                    "opponent": "Villarreal",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.0532,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 9.0,
                  "is_starting_11": 0.0,
                  "totalShots": 1.1887,
                  "creative_index": 0.4244,
                  "expectedGoals": 0.0494,
                  "expectedAssists": 0.1221,
                  "totalOppositionHalfPasses": 8.2525
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6718746423721313,
                    "model_output": 0.6719,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1509
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1463
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0658
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0549
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0303
                      }
                    ],
                    "decomposition": {
                      "base": 0.8903,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3665
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0483
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0377
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.022
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.021
                        }
                      ],
                      "others": 0.0631,
                      "total": 0.6719,
                      "log_link": true,
                      "margin_base": -0.116227,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.53054
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.0883
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.063867
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.036708
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.035096
                        }
                      ],
                      "others_margin": 0.098528
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07806756347417831,
                    "model_output": 0.0781,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.124
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1096
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.1004
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0504
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0481
                      }
                    ],
                    "decomposition": {
                      "base": 0.0849,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.035
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0123
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.007
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0033
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0034
                        }
                      ],
                      "others": 0.0022,
                      "total": 0.0781,
                      "log_link": true,
                      "margin_base": -2.465779,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.530158
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.219726
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.107008
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.046322
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.046236
                        }
                      ],
                      "others_margin": 0.026464
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0845869705080986,
                    "model_output": 0.0846,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0484
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.041
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0364
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0345
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 0.085,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0199
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0076
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0057
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0042
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.004
                        }
                      ],
                      "others": 0.0064,
                      "total": 0.0846,
                      "log_link": true,
                      "margin_base": -2.464835,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.26593
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.110773
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.075288
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.055146
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.05256
                        }
                      ],
                      "others_margin": 0.077316
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05661642551422119,
                    "model_output": 0.0566,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1246
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0812
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0743
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0236
                      }
                    ],
                    "decomposition": {
                      "base": 0.0914,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0397
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0053
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0053
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0057
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0036
                        }
                      ],
                      "others": 0.0028,
                      "total": 0.0566,
                      "log_link": true,
                      "margin_base": -2.392179,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.568621
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.108333
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.10739
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.105332
                        },
                        {
                          "name": "goals",
                          "margin": -0.064575
                        }
                      ],
                      "others_margin": 0.049529
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08595152199268341,
                    "model_output": 0.086,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0997
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0571
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0408
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0322
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.095,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0388
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0148
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.005
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0037
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0036
                        }
                      ],
                      "others": 0.0027,
                      "total": 0.086,
                      "log_link": true,
                      "margin_base": -2.354031,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.525634
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.233317
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.067863
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.047139
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.044058
                        }
                      ],
                      "others_margin": 0.033316
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.241114541888237,
                    "model_output": 0.2411,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1247
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0771
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0302
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0257
                      }
                    ],
                    "decomposition": {
                      "base": 0.3183,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1496
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0363
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0181
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0127
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0076
                        }
                      ],
                      "others": 0.0231,
                      "total": 0.2411,
                      "log_link": true,
                      "margin_base": -1.144772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.634662
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.19487
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.084703
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.058552
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.035284
                        }
                      ],
                      "others_margin": 0.100645
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7350592613220215,
                    "model_output": 0.7351,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1344
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1196
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0517
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0474
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 0.9841,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4847
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1373
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0445
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0359
                        },
                        {
                          "name": "history_matches",
                          "contribution": -0.0276
                        }
                      ],
                      "others": 0.0456,
                      "total": 0.7351,
                      "log_link": false,
                      "margin_base": 0.984109,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.484744
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.137253
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.044451
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.03595
                        },
                        {
                          "name": "history_matches",
                          "margin": -0.027584
                        }
                      ],
                      "others_margin": 0.045625
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.718691825866699,
                    "model_output": 6.7187,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0876
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0829
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0504
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0471
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0357
                      }
                    ],
                    "decomposition": {
                      "base": 6.8552,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0808
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0309
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0294
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0145
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0121
                        }
                      ],
                      "others": 0.0022,
                      "total": 6.7187,
                      "log_link": false,
                      "margin_base": 6.855195,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.080798
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.030934
                        },
                        {
                          "name": "rating",
                          "margin": -0.029374
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.014523
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.012094
                        }
                      ],
                      "others_margin": 0.002173
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 9,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9978, quality 0.484)",
              "stats": {
                "key_pass": 0.6704,
                "expected_assists": 0.0779,
                "assists": 0.0844,
                "assist_rate": 0.0844,
                "expected_goals": 0.0565,
                "goals": 0.0858,
                "goal_rate": 0.0858,
                "shots_on_target": 0.2406,
                "total_shots": 0.7334,
                "rating": 6.7187,
                "minutes": 19.59,
                "total_pass": 8.1123,
                "accurate_pass": 6.9914,
                "duels_won": 1.4012,
                "total_long_balls": 0.9396,
                "accurate_long_balls": 0.6593,
                "total_own_half_passes": 2.0606,
                "accurate_own_half_passes": 2.0606,
                "total_opp_half_passes": 6.0518,
                "accurate_opp_half_passes": 4.9308,
                "crosses_total": 2.2264,
                "crosses_accurate": 0.6681,
                "touches": 15.2851,
                "possession_lost": 3.5694,
                "dispossessed": 0.0,
                "duels_lost": 1.6078,
                "aerial_won": 0.2803,
                "aerial_lost": 0.0,
                "interceptions": 0.61,
                "tackles_won": 0.2802,
                "tackles": 0.5605,
                "clearances": 0.0,
                "total_contest": 0.8901,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.7175,
                "fouls_drawn": 0.5605,
                "blocks": 0.0,
                "big_chances_created": 0.3878,
                "big_chances_missed": 0.0,
                "xgot": 0.0235,
                "ball_carries": 5.6144,
                "total_progression": 17.5172,
                "progressive_carries": 0.9978,
                "shots_off_target": 0.4928
              },
              "params": {
                "market_value_eur": 6800000,
                "quality_factor": 0.4842,
                "boost_factor": 0.9978,
                "reference_quality": 0.505,
                "history_matches": 9,
                "history_shrink": 0.3571,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.6 to 22.2 expected minutes (appearance prob 0.51)",
              "stats": {
                "key_pass": 0.7583,
                "expected_assists": 0.0881,
                "assists": 0.0955,
                "assist_rate": 0.0955,
                "expected_goals": 0.0639,
                "goals": 0.097,
                "goal_rate": 0.097,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0266,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16
              },
              "params": {
                "expected_minutes": 22.16,
                "projection_minutes": 19.59,
                "minutes_scale": 1.1311,
                "appearance_probability": 0.507
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.7583,
                "expected_assists": 0.0881,
                "assists": 0.0955,
                "assist_rate": 0.0955,
                "expected_goals": 0.0639,
                "goals": 0.097,
                "goal_rate": 0.097,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0266,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16
              },
              "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.7583,
                "expected_assists": 0.0881,
                "assist_rate": 0.0955,
                "assists": 0,
                "expected_goals": 0.0639,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0266,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "key_pass": 0.7583,
                "expected_assists": 0.0491,
                "assist_rate": 0.0955,
                "assists": 0,
                "expected_goals": 0.0383,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0159,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.0536
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 0.507
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0639,
                  "after": 0.0383
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0881,
                  "after": 0.0491
                }
              ]
            },
            {
              "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": {
                "key_pass": 0.7583,
                "expected_assists": 0.0491,
                "assist_rate": 0.0955,
                "assists": 0,
                "expected_goals": 0.0383,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0159,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.0536,
                "fifa_overall": 72.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": 4446,
                "fifa_rank": 4144.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.7583,
                "expected_assists": 0.0491,
                "assist_rate": 0.0955,
                "assists": 0,
                "expected_goals": 0.0383,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0159,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0369,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.0536,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0369,
                "goal_rate": 0.097,
                "scorer_weight": 0.0479,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0363,
                "finishing_factor": 1.25,
                "appearance_weight": 0.507,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.7583,
                "expected_assists": 0.0491,
                "assist_rate": 0.0955,
                "assists": 0,
                "expected_goals": 0.0383,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.2721,
                "total_shots": 0.8295,
                "rating": 6.7187,
                "minutes": 22.16,
                "total_pass": 9.1755,
                "accurate_pass": 7.9077,
                "duels_won": 1.5848,
                "total_long_balls": 1.0627,
                "accurate_long_balls": 0.7457,
                "total_own_half_passes": 2.3307,
                "accurate_own_half_passes": 2.3307,
                "total_opp_half_passes": 6.8449,
                "accurate_opp_half_passes": 5.577,
                "crosses_total": 2.5182,
                "crosses_accurate": 0.7557,
                "touches": 17.2883,
                "possession_lost": 4.0372,
                "dispossessed": 0.0,
                "duels_lost": 1.8185,
                "aerial_won": 0.317,
                "aerial_lost": 0.0,
                "interceptions": 0.6899,
                "tackles_won": 0.3169,
                "tackles": 0.634,
                "clearances": 0.0,
                "total_contest": 1.0068,
                "won_contest": 0.0,
                "challenges_lost": 0.3297,
                "fouls": 0.8115,
                "fouls_drawn": 0.634,
                "blocks": 0.0,
                "big_chances_created": 0.4386,
                "big_chances_missed": 0.0,
                "xgot": 0.0159,
                "ball_carries": 6.3502,
                "total_progression": 19.8129,
                "progressive_carries": 1.1286,
                "shots_off_target": 0.5574,
                "bench_appearance_probability": 0.507,
                "bench_expected_minutes": 22.16,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0369,
                "projected_assists": 0,
                "assist_probability": 0.0468,
                "finishing_factor": 1.25,
                "creation_factor": 1.0536,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0468,
                "assist_rate": 0.0955,
                "provider_weight": 0.0517,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0569,
                "creation_factor": 1.0536,
                "appearance_weight": 0.507,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Tyrhys Dolan": {
          "player_id": 1063015,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 170,
          "market_value": 10800000,
          "stats": {
            "expected_goals": 0.0176,
            "goal_rate": 0.0529,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0154,
            "key_pass": 0,
            "rating": 6.6329,
            "minutes": 26,
            "total_pass": 9,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 5.4622,
            "dispossessed": 0.1109,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0151,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 17,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.342,
            "bench_expected_minutes": 25.67,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 1.95,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0172,
            "projected_assists": 0,
            "assist_probability": 0.0151,
            "finishing_factor": 1.1005,
            "creation_factor": 0.8,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16421083,
              "match_date": "2026-10-24",
              "home_team": "Real Racing Club",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 14,
                "rating": 6.5,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1113,
                "expected_assists": 0.0087,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 9,
                "tackles": 0,
                "tackles_won": 0,
                "interceptions": 0,
                "clearances": 1,
                "aerial_won": 0,
                "duels_won": 0,
                "ball_recovery": 2,
                "saves": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421062,
              "match_date": "2026-10-09",
              "home_team": "Málaga CF",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 82,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0762,
                "expected_assists": 0.0216,
                "total_shots": 1,
                "total_pass": 19,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416299,
              "match_date": "2026-09-18",
              "home_team": "Espanyol",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Elche",
              "stats": {
                "minutes": 23,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1388,
                "expected_assists": 0.0858,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 66,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1573,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 11,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416323,
              "match_date": "2026-09-06",
              "home_team": "Espanyol",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0118,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416310,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 83,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1341,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 15,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1023,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 18,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 81,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2108,
                "expected_assists": 0.0398,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 24,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "duels_won": 2,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083719,
              "match_date": "2026-05-23",
              "home_team": "Espanyol",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1364,
                "expected_assists": 0.0032,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 10,
                "accurate_pass": 9,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 76,
                "rating": 7.1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.5799,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 9,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3488,
            "combined_rank_score": 1474.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 52.0,
            "sofascore_rating": 7.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2897.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6329,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tyrhys Dolan",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Leandro González Pírez",
                  "ranking": 3483
                },
                {
                  "player_name": "Mahdi Camara",
                  "ranking": 3484
                },
                {
                  "player_name": "Saud Abdulhamid",
                  "ranking": 3485
                },
                {
                  "player_name": "Orel Mangala",
                  "ranking": 3486
                },
                {
                  "player_name": "Lassine Sinayoko",
                  "ranking": 3487
                }
              ],
              "lower": [
                {
                  "player_name": "Yann Gboho",
                  "ranking": 3489
                },
                {
                  "player_name": "Ansu Fati",
                  "ranking": 3490
                },
                {
                  "player_name": "Marcus Edwards",
                  "ranking": 3491
                },
                {
                  "player_name": "Ismaël Doukouré",
                  "ranking": 3492
                },
                {
                  "player_name": "Unai Marrero",
                  "ranking": 3493
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.778,
          "history_matches": 44,
          "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": 44,
            "data_confidence": 0.778,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 25.665977174234964,
            "bench_appearance_prob": 0.342,
            "market_value_adjustment": 1.0008,
            "fbref_prior_metrics": {
              "squad": "Espanyol",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.35714285714285715,
              "assists_per90": 0.0,
              "prior_reliability": 0.1867
            },
            "rationale": "Bench projection scaled from XGBoost F_service (44 historical appearances) to 25.7 expected mins (appearance prob 0.34); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0471,
                "goals": 0.0565,
                "goal_rate": 0.0565,
                "shots_on_target": 0.2047,
                "total_shots": 0.556,
                "expected_assists": 0.0446,
                "key_pass": 0.4358,
                "rating": 6.6329,
                "minutes": 27.82,
                "total_pass": 9.8932,
                "accurate_pass": 8.0517,
                "duels_won": 2.0692,
                "total_long_balls": 0.1656,
                "accurate_long_balls": 0.0509,
                "total_opp_half_passes": 6.8759,
                "accurate_opp_half_passes": 5.5194,
                "crosses_total": 2.063,
                "crosses_accurate": 0.2453,
                "touches": 19.5307,
                "possession_lost": 5.9159,
                "dispossessed": 0.1108,
                "duels_lost": 1.8684,
                "aerial_lost": 0.4954,
                "total_contest": 1.0425,
                "won_contest": 0.4198,
                "ball_recovery": 1.8022,
                "challenges_lost": 0.4104,
                "fouls": 0.2891,
                "fouls_drawn": 0.5376,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4122,
                "tackles_won": 0.5394,
                "tackles": 0.8317,
                "clearances": 0.3217,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0509,
                "xgot": 0.0405,
                "offsides": 0.1825,
                "ball_carries": 5.9864,
                "total_progression": 18.792,
                "progressive_carries": 0.696,
                "shots_off_target": 0.3513
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-30T10:06:06.001115+00:00",
                  "trained_on": {
                    "matches": 1420,
                    "players": 609,
                    "rows": 16888
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-24",
                    "opponent": "Real Racing Club",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.1501,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-10-09",
                    "opponent": "Málaga CF",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-18",
                    "opponent": "Elche",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Osasuna",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Real Sociedad",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Levante UD",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Real Sociedad",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Osasuna",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0696,
                  "accuratePass": 12.9556,
                  "totalOppositionHalfPasses": 9.6195,
                  "accurateOppositionHalfPasses": 8.2106,
                  "totalShots": 0.9393
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04711058363318443,
                    "model_output": 0.0471,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2845
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0924
                      },
                      {
                        "name": "goals",
                        "importance": 0.0347
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0293
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.1959,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0895
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0174
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0061
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0049
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.0265,
                      "total": 0.0471,
                      "log_link": true,
                      "margin_base": -1.629959,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.610201
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.178103
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.07073
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.061352
                        },
                        {
                          "name": "goals",
                          "margin": -0.058038
                        }
                      ],
                      "others_margin": -0.446875
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05651402473449707,
                    "model_output": 0.0565,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1389
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0752
                      },
                      {
                        "name": "goals",
                        "importance": 0.053
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0357
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0318
                      }
                    ],
                    "decomposition": {
                      "base": 0.2005,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0915
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0112
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0079
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0059
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.0228,
                      "total": 0.0565,
                      "log_link": true,
                      "margin_base": -1.607059,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.609548
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.108457
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.083872
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.067446
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.057053
                        }
                      ],
                      "others_margin": -0.339831
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.20468662679195404,
                    "model_output": 0.2047,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2284
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0649
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0539
                      },
                      {
                        "name": "goals",
                        "importance": 0.0437
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 0.5322,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2087
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0271
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0216
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0159
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0132
                        }
                      ],
                      "others": -0.041,
                      "total": 0.2047,
                      "log_link": true,
                      "margin_base": -0.630772,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.497737
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.087625
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.075784
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.059524
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.052217
                        }
                      ],
                      "others_margin": -0.182616
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5559530854225159,
                    "model_output": 0.556,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2907
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0699
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0519
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0288
                      },
                      {
                        "name": "goals",
                        "importance": 0.0237
                      }
                    ],
                    "decomposition": {
                      "base": 1.3802,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5173
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1207
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0327
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.023
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0212
                        }
                      ],
                      "others": -0.1093,
                      "total": 0.556,
                      "log_link": false,
                      "margin_base": 1.380151,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.51727
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.120726
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.032741
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.022981
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.021217
                        }
                      ],
                      "others_margin": -0.109263
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04460413008928299,
                    "model_output": 0.0446,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1025
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0785
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0557
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0538
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0536
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0201
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0035
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0027
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0024
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0012
                        }
                      ],
                      "others": 0.0008,
                      "total": 0.0446,
                      "log_link": true,
                      "margin_base": -2.744073,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.375503
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.076737
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.059049
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.054958
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.026843
                        }
                      ],
                      "others_margin": 0.020074
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.4357838034629822,
                    "model_output": 0.4358,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1455
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.126
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0911
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0788
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.6867,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2637
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0221
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0183
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0171
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0113
                        }
                      ],
                      "others": 0.0148,
                      "total": 0.4358,
                      "log_link": true,
                      "margin_base": -0.375804,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.484383
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.05093
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.04186
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.040895
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.027144
                        }
                      ],
                      "others_margin": 0.03426
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6328935623168945,
                    "model_output": 6.6329,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0591
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0494
                      },
                      {
                        "name": "rating",
                        "importance": 0.0477
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      }
                    ],
                    "decomposition": {
                      "base": 6.7708,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0616
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.017
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0151
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0132
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0128
                        }
                      ],
                      "others": -0.0446,
                      "total": 6.6329,
                      "log_link": false,
                      "margin_base": 6.770844,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.061605
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.016967
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.015136
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.01317
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.012848
                        }
                      ],
                      "others_margin": -0.044565
                    }
                  }
                ],
                "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.0008, quality 0.532)",
              "stats": {
                "expected_goals": 0.0471,
                "goals": 0.0566,
                "goal_rate": 0.0566,
                "shots_on_target": 0.2049,
                "total_shots": 0.5565,
                "expected_assists": 0.0446,
                "key_pass": 0.4361,
                "rating": 6.6329,
                "minutes": 27.82,
                "total_pass": 9.9011,
                "accurate_pass": 8.0581,
                "duels_won": 2.0709,
                "total_long_balls": 0.1657,
                "accurate_long_balls": 0.0509,
                "total_opp_half_passes": 6.8814,
                "accurate_opp_half_passes": 5.5238,
                "crosses_total": 2.0647,
                "crosses_accurate": 0.2455,
                "touches": 19.5463,
                "possession_lost": 5.9206,
                "dispossessed": 0.1109,
                "duels_lost": 1.8699,
                "aerial_lost": 0.4958,
                "total_contest": 1.0433,
                "won_contest": 0.4201,
                "ball_recovery": 1.8036,
                "challenges_lost": 0.4107,
                "fouls": 0.2893,
                "fouls_drawn": 0.538,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4125,
                "tackles_won": 0.5398,
                "tackles": 0.8324,
                "clearances": 0.322,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0509,
                "xgot": 0.0405,
                "offsides": 0.1826,
                "ball_carries": 5.9912,
                "total_progression": 18.807,
                "progressive_carries": 0.6966,
                "shots_off_target": 0.3516
              },
              "params": {
                "market_value_eur": 10800000,
                "quality_factor": 0.5318,
                "boost_factor": 1.0008,
                "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.0124)",
              "stats": {
                "expected_goals": 0.0471,
                "goals": 0.0573,
                "goal_rate": 0.0573,
                "shots_on_target": 0.2037,
                "total_shots": 0.5551,
                "expected_assists": 0.0446,
                "key_pass": 0.4361,
                "rating": 6.6329,
                "minutes": 27.82,
                "total_pass": 9.9011,
                "accurate_pass": 8.0581,
                "duels_won": 2.0709,
                "total_long_balls": 0.1657,
                "accurate_long_balls": 0.0509,
                "total_opp_half_passes": 6.8814,
                "accurate_opp_half_passes": 5.5238,
                "crosses_total": 2.0501,
                "crosses_accurate": 0.2455,
                "touches": 19.5463,
                "possession_lost": 5.9206,
                "dispossessed": 0.1109,
                "duels_lost": 1.8699,
                "aerial_lost": 0.4958,
                "total_contest": 1.0433,
                "won_contest": 0.4201,
                "ball_recovery": 1.8036,
                "challenges_lost": 0.4107,
                "fouls": 0.2926,
                "fouls_drawn": 0.5368,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4142,
                "tackles_won": 0.5358,
                "tackles": 0.8324,
                "clearances": 0.322,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0509,
                "xgot": 0.0405,
                "offsides": 0.1817,
                "ball_carries": 5.9912,
                "total_progression": 18.807,
                "progressive_carries": 0.6966,
                "shots_off_target": 0.3516
              },
              "params": {
                "blend_weight": 0.0124,
                "history_matches": 44,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.3091,
                "prior_reliability": 0.1867,
                "competition": "La Liga",
                "squad": "Espanyol"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.0647,
                  "after": 2.0501
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 27.8 to 25.7 expected minutes (appearance prob 0.34)",
              "stats": {
                "expected_goals": 0.0435,
                "goals": 0.0529,
                "goal_rate": 0.0529,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0411,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0374,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67
              },
              "params": {
                "expected_minutes": 25.67,
                "projection_minutes": 27.82,
                "minutes_scale": 0.9226,
                "appearance_probability": 0.342
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0435,
                "goals": 0.0529,
                "goal_rate": 0.0529,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0411,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0374,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67
              },
              "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.0435,
                "goal_rate": 0.0529,
                "goals": 0,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0411,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0374,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.19 (squad xG sum 1.0072, xG scale 1.1825, xA scale 1.0990, team xA 0.95 = 0.80 x lambda)",
              "stats": {
                "expected_goals": 0.0176,
                "goal_rate": 0.0529,
                "goals": 0,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0154,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0151,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.1005,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.191,
                "squad_xg_sum": 1.0072,
                "squad_xa_sum": 0.867,
                "team_expected_assists": 0.9528,
                "team_xa_to_xg_ratio": 0.8,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1825,
                "xa_scale": 1.099,
                "opponent_lambda": 1.848,
                "scoreline_reset": true,
                "appearance_weight": 0.342
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0435,
                  "after": 0.0176
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0411,
                  "after": 0.0154
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 74.0)",
              "stats": {
                "expected_goals": 0.0176,
                "goal_rate": 0.0529,
                "goals": 0,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0154,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0151,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "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.1005,
                "creation_factor": 0.8,
                "fifa_overall": 74.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": 3488,
                "fifa_rank": 2897.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0176,
                "goal_rate": 0.0529,
                "goals": 0,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0154,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0151,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0172,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1005,
                "creation_factor": 0.8,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0172,
                "goal_rate": 0.0529,
                "scorer_weight": 0.0194,
                "squad_weight_total": 1.3186,
                "weight_share": 0.0147,
                "finishing_factor": 1.1005,
                "appearance_weight": 0.342,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Roberto Fernández",
                    "weight": 0.4689,
                    "already": 0,
                    "effective_weight": 0.4689,
                    "runner_up": "Álex Calatrava",
                    "runner_up_effective_weight": 0.1502
                  }
                ]
              }
            },
            {
              "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.0176,
                "goal_rate": 0.0529,
                "goals": 0,
                "shots_on_target": 0.1879,
                "total_shots": 0.5123,
                "expected_assists": 0.0154,
                "key_pass": 0.4023,
                "rating": 6.6329,
                "minutes": 25.67,
                "total_pass": 9.1345,
                "accurate_pass": 7.4342,
                "duels_won": 1.9106,
                "total_long_balls": 0.1529,
                "accurate_long_balls": 0.047,
                "total_opp_half_passes": 6.3486,
                "accurate_opp_half_passes": 5.0961,
                "crosses_total": 1.8914,
                "crosses_accurate": 0.2265,
                "touches": 18.0329,
                "possession_lost": 5.4622,
                "dispossessed": 0.1109,
                "duels_lost": 1.7251,
                "aerial_lost": 0.4958,
                "total_contest": 0.9625,
                "won_contest": 0.3876,
                "ball_recovery": 1.664,
                "challenges_lost": 0.4107,
                "fouls": 0.2699,
                "fouls_drawn": 0.4952,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3821,
                "tackles_won": 0.4943,
                "tackles": 0.7679,
                "clearances": 0.2971,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.047,
                "xgot": 0.0151,
                "offsides": 0.1817,
                "ball_carries": 5.5273,
                "total_progression": 17.3508,
                "progressive_carries": 0.6427,
                "shots_off_target": 0.3244,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.67,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 1.95,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0172,
                "projected_assists": 0,
                "assist_probability": 0.0151,
                "finishing_factor": 1.1005,
                "creation_factor": 0.8,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0151,
                "assist_rate": 0.0,
                "provider_weight": 0.0123,
                "squad_weight_total": 0.9085,
                "weight_share": 0.0136,
                "creation_factor": 0.8,
                "appearance_weight": 0.342,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Javier Hernández",
                    "weight": 0.19,
                    "already": 0,
                    "effective_weight": 0.19,
                    "runner_up": "Edu Expósito",
                    "runner_up_effective_weight": 0.1322,
                    "blocked_own_goal": [
                      "Roberto Fernández"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.19,
        "expected_assists": 0.95,
        "total_shots": 11,
        "shots_on_target": 1,
        "total_passes": 332,
        "interceptions": 7,
        "tackles": 17,
        "avg_rating": 6.85,
        "possession_estimated_pct": 49.7,
        "pressing_actions_per_90": 6.6
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Georges Mikautadze",
        "attacker_role": "ST",
        "attacker_market_value": 43000000,
        "attacker_height": 176,
        "attacker_skill_quality": 0.796,
        "defenders": [
          "Leandro Cabrera",
          "Vanja Drkušić"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.453,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.301,
        "xg_contribution": 0.422,
        "xg_multiplier": 1.1488,
        "shots_in_zone": 2.5,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.5,
        "aerial_duels": 3,
        "aerial_won": 1.4,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Leandro Cabrera",
            "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.699
          },
          {
            "player": "Vanja Drkušić",
            "role": "CB",
            "market_value": 5500000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.8,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.699
          }
        ],
        "duel_analysis": "Georges Mikautadze (ST) is slightly favored against Leandro Cabrera and Vanja Drkušić in a 2-defender block. Duel win probability: 30%. The quality gap is significant (€43M vs €3M avg). Matchup xG multiplier ×1.15 (×1.00 = his usual level). Projected xG contribution: 0.422 — creating consistent moderate threat."
      },
      {
        "attacker": "Alberto Moleiro",
        "attacker_role": "ST",
        "attacker_market_value": 54000000,
        "attacker_height": 172,
        "attacker_skill_quality": 0.837,
        "defenders": [
          "Leandro Cabrera",
          "Vanja Drkušić"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.453,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.308,
        "xg_contribution": 0.3257,
        "xg_multiplier": 1.1585,
        "shots_in_zone": 2.5,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.5,
        "aerial_duels": 3,
        "aerial_won": 1.3,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Leandro Cabrera",
            "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.9,
            "defensive_success_rate": 0.692
          },
          {
            "player": "Vanja Drkušić",
            "role": "CB",
            "market_value": 5500000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.8,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.692
          }
        ],
        "duel_analysis": "Alberto Moleiro (ST) is slightly favored against Leandro Cabrera and Vanja Drkušić in a 2-defender block. Duel win probability: 31%. The quality gap is significant (€54M vs €3M avg). Matchup xG multiplier ×1.16 (×1.00 = his usual level). Projected xG contribution: 0.326 — creating consistent moderate threat."
      },
      {
        "attacker": "Gerard Moreno",
        "attacker_role": "ST",
        "attacker_market_value": 2400000,
        "attacker_height": 180,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Leandro Cabrera",
          "Vanja Drkušić"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.453,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.2484,
        "xg_multiplier": 0.9354,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.6,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Leandro Cabrera",
            "role": "CB",
            "market_value": 930000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Vanja Drkušić",
            "role": "CB",
            "market_value": 5500000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Gerard Moreno (ST) faces tough defensive resistance against Leandro Cabrera and Vanja Drkušić in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.94 (×1.00 = his usual level). Projected xG contribution: 0.248 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Tajon Buchanan",
        "attacker_role": "LM",
        "attacker_market_value": 13000000,
        "attacker_height": 183,
        "attacker_skill_quality": 0.557,
        "defenders": [
          "Omar El Hilali"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.589,
        "duel_zone": "Left Mid vs Right Back — Wide Channel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.422,
        "xg_contribution": 0.1438,
        "xg_multiplier": 0.9446,
        "shots_in_zone": 1.5,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.1,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 2.3,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Omar El Hilali",
            "role": "RB",
            "market_value": 15900000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.7,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.578
          }
        ],
        "duel_analysis": "Tajon Buchanan (LM) is evenly matched against Omar El Hilali in a direct 1v1 contest. Duel win probability: 42%.  Matchup xG multiplier ×0.94 (×1.00 = his usual level). Projected xG contribution: 0.144 — with neither side clearly dominant."
      },
      {
        "attacker": "Santi Comesaña",
        "attacker_role": "CM",
        "attacker_market_value": 8400000,
        "attacker_height": 187,
        "attacker_skill_quality": 0.503,
        "defenders": [
          "Álex Calatrava"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.461,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.517,
        "xg_contribution": 0.0642,
        "xg_multiplier": 1.099,
        "shots_in_zone": 1.8,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.9,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Álex Calatrava",
            "role": "CDM",
            "market_value": 4900000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.5,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.483
          }
        ],
        "duel_analysis": "Santi Comesaña (CM) is slightly favored against Álex Calatrava in a direct 1v1 contest. Duel win probability: 52%.  Matchup xG multiplier ×1.10 (×1.00 = his usual level). Projected xG contribution: 0.064 — creating consistent moderate threat."
      },
      {
        "attacker": "Carlos Maciá",
        "attacker_role": "CM",
        "attacker_market_value": 14500000,
        "attacker_height": 194,
        "attacker_skill_quality": 0.574,
        "defenders": [
          "Álex Calatrava"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.461,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.564,
        "xg_contribution": 0.0507,
        "xg_multiplier": 1.1673,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 2,
        "dribbles_successful": 1.0,
        "aerial_duels": 2,
        "aerial_won": 1.4,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.0,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Álex Calatrava",
            "role": "CDM",
            "market_value": 4900000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.5,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.436
          }
        ],
        "duel_analysis": "Carlos Maciá (CM) is slightly favored against Álex Calatrava in a direct 1v1 contest. Duel win probability: 56%.  Matchup xG multiplier ×1.17 (×1.00 = his usual level). Projected xG contribution: 0.051 — creating consistent moderate threat."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Edu Expósito",
        "attacker_role": "LW",
        "attacker_market_value": 4500000,
        "attacker_height": 175,
        "attacker_skill_quality": 0.456,
        "defenders": [
          "Juan Foyth"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.506,
        "duel_zone": "Left Wing vs Right Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.39,
        "xg_contribution": 0.0944,
        "xg_multiplier": 0.868,
        "shots_in_zone": 1.7,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.0,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 1.9,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Juan Foyth",
            "role": "RB",
            "market_value": 8600000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.6,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.61
          }
        ],
        "duel_analysis": "Edu Expósito (LW) faces tough defensive resistance against Juan Foyth in a direct 1v1 contest. Duel win probability: 39%.  Matchup xG multiplier ×0.87 (×1.00 = his usual level). Projected xG contribution: 0.094 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Javier Hernández",
        "attacker_role": "CAM",
        "attacker_market_value": 6400000,
        "attacker_height": 175,
        "attacker_skill_quality": 0.479,
        "defenders": [
          "Santi Comesaña"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.503,
        "duel_zone": "CAM vs CM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.358,
        "xg_contribution": 0.1025,
        "xg_multiplier": 0.9088,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.9,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Santi Comesaña",
            "role": "CM",
            "market_value": 8400000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.7,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.642
          }
        ],
        "duel_analysis": "Javier Hernández (CAM) faces tough defensive resistance against Santi Comesaña in a direct 1v1 contest. Duel win probability: 36%.  Matchup xG multiplier ×0.91 (×1.00 = his usual level). Projected xG contribution: 0.103 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Roberto Fernández",
        "attacker_role": "ST",
        "attacker_market_value": 21000000,
        "attacker_height": 186,
        "attacker_skill_quality": 0.641,
        "defenders": [
          "Renato Veiga",
          "Alexander Freeman"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.638,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.3496,
        "xg_multiplier": 0.9469,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.7,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Renato Veiga",
            "role": "CB",
            "market_value": 29000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Alexander Freeman",
            "role": "CB",
            "market_value": 13800000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Roberto Fernández (ST) is evenly matched against Renato Veiga and Alexander Freeman in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.95 (×1.00 = his usual level). Projected xG contribution: 0.350 — with neither side clearly dominant."
      },
      {
        "attacker": "Bryan Zaragoza",
        "attacker_role": "ST",
        "attacker_market_value": 7500000,
        "attacker_height": 165,
        "attacker_skill_quality": 0.493,
        "defenders": [
          "Renato Veiga",
          "Alexander Freeman"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.638,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.0895,
        "xg_multiplier": 0.7784,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Renato Veiga",
            "role": "CB",
            "market_value": 29000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Alexander Freeman",
            "role": "CB",
            "market_value": 13800000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Bryan Zaragoza (ST) is heavily outmatched defensively against Renato Veiga and Alexander Freeman in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.78 (×1.00 = his usual level). Projected xG contribution: 0.090 — with very limited chance creation expected."
      },
      {
        "attacker": "Álex Calatrava",
        "attacker_role": "CDM",
        "attacker_market_value": 4900000,
        "attacker_height": 175,
        "attacker_skill_quality": 0.461,
        "defenders": [
          "Santi Comesaña"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.503,
        "duel_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.333,
        "xg_contribution": 0.1078,
        "xg_multiplier": 0.901,
        "shots_in_zone": 0.9,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.6,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Santi Comesaña",
            "role": "CM",
            "market_value": 8400000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.7,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.667
          }
        ],
        "duel_analysis": "Álex Calatrava (CDM) faces tough defensive resistance against Santi Comesaña in a direct 1v1 contest. Duel win probability: 33%.  Matchup xG multiplier ×0.90 (×1.00 = his usual level). Projected xG contribution: 0.108 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Gabriel Moscardo",
        "attacker_role": "CDM",
        "attacker_market_value": 7500000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.493,
        "defenders": [
          "Santi Comesaña"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.503,
        "duel_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.389,
        "xg_contribution": 0.0778,
        "xg_multiplier": 0.9842,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Santi Comesaña",
            "role": "CM",
            "market_value": 8400000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.6,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.611
          }
        ],
        "duel_analysis": "Gabriel Moscardo (CDM) is evenly matched against Santi Comesaña in a direct 1v1 contest. Duel win probability: 39%.  Matchup xG multiplier ×0.98 (×1.00 = his usual level). Projected xG contribution: 0.078 — with neither side clearly dominant."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.545,
      "away_midfield_power": 0.497,
      "home_creative_power": 0.519,
      "away_creative_power": 0.498,
      "home_defensive_power": 0.458,
      "away_defensive_power": 0.474,
      "home_dominance_ratio": 0.523,
      "home_midfield_count": 3,
      "away_midfield_count": 4,
      "home_midfield_players": [
        "Santi Comesaña",
        "Carlos Maciá",
        "Tajon Buchanan"
      ],
      "away_midfield_players": [
        "Javier Hernández",
        "Álex Calatrava",
        "Gabriel Moscardo",
        "Edu Expósito"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 50.3,
      "estimated_possession_away_pct": 49.7,
      "home_pressing_actions_per_90": 6.6,
      "away_pressing_actions_per_90": 6.6,
      "home_key_passes_projected": 4.6,
      "away_key_passes_projected": 4.5,
      "home_throughball_threat": 2.2,
      "away_throughball_threat": 2.1,
      "key_personal_duel": "Carlos Maciá vs Gabriel Moscardo",
      "midfield_lambda_factor_home": 1.008,
      "midfield_lambda_factor_away": 0.998
    },
    "formation_analysis": {
      "home_formation": "4-4-2",
      "away_formation": "4-2-3-1",
      "home_tactical_bonus": -0.04,
      "away_tactical_bonus": 0.07,
      "formation_verdict": "Tactical parity between 4-4-2 and 4-2-3-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.848,
    "away_lambda": 1.191,
    "home_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
    ],
    "away_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Holding Mid vs Central Mid — Midfield Anchor Duel"
    ],
    "home_player_antagonists": {
      "Georges Mikautadze": {
        "opponents": [
          "Leandro Cabrera",
          "Vanja Drkušić"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Alberto Moleiro": {
        "opponents": [
          "Leandro Cabrera",
          "Vanja Drkušić"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Gerard Moreno": {
        "opponents": [
          "Leandro Cabrera",
          "Vanja Drkušić"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Tajon Buchanan": {
        "opponents": [
          "Omar El Hilali",
          "Gabriel Moscardo"
        ],
        "primary_zone": "Left Mid vs Right Back — Wide Channel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Santi Comesaña": {
        "opponents": [
          "Álex Calatrava",
          "Javier Hernández",
          "Gabriel Moscardo",
          "Edu Expósito"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Carlos Maciá": {
        "opponents": [
          "Álex Calatrava"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Juan Foyth": {
        "opponents": [
          "Edu Expósito"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "defensive_duel"
      },
      "Renato Veiga": {
        "opponents": [
          "Roberto Fernández",
          "Bryan Zaragoza"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Alexander Freeman": {
        "opponents": [
          "Roberto Fernández",
          "Bryan Zaragoza"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Péter Gulácsi": {
        "opponents": [
          "Roberto Fernández",
          "Bryan Zaragoza"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Sergi Cardona": {
        "opponents": [
          "Roberto Fernández"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Leandro Cabrera": {
        "opponents": [
          "Georges Mikautadze",
          "Alberto Moleiro",
          "Gerard Moreno"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Vanja Drkušić": {
        "opponents": [
          "Georges Mikautadze",
          "Alberto Moleiro",
          "Gerard Moreno"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Omar El Hilali": {
        "opponents": [
          "Tajon Buchanan"
        ],
        "primary_zone": "Left Mid vs Right Back — Wide Channel",
        "source": "defensive_duel"
      },
      "Álex Calatrava": {
        "opponents": [
          "Santi Comesaña",
          "Carlos Maciá"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "defensive_duel, attacking_duel, midfield_pairing"
      },
      "Edu Expósito": {
        "opponents": [
          "Juan Foyth",
          "Santi Comesaña"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Javier Hernández": {
        "opponents": [
          "Santi Comesaña"
        ],
        "primary_zone": "CAM vs CM",
        "source": "attacking_duel, midfield_pairing"
      },
      "Roberto Fernández": {
        "opponents": [
          "Renato Veiga",
          "Alexander Freeman"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Bryan Zaragoza": {
        "opponents": [
          "Renato Veiga",
          "Alexander Freeman"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Gabriel Moscardo": {
        "opponents": [
          "Santi Comesaña",
          "Tajon Buchanan"
        ],
        "primary_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Ángel Fortuño": {
        "opponents": [
          "Alberto Moleiro",
          "Georges Mikautadze"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Quilindschy Hartman": {
        "opponents": [
          "Gerard Moreno"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Carlos Maciá vs Gabriel Moscardo will be the pivotal duel. Total antagonist xG — Home: 1.25, Away: 0.82. 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.35,
      "home_advantage_factor": 1.3418,
      "ha_source": "estimated:league",
      "home_gk_opposition_factor": 1.0107,
      "away_gk_opposition_factor": 1.0107,
      "home_set_piece_bonus": 0.1471,
      "away_set_piece_bonus": 0.093,
      "home_defensive_solidity_vs": 0.987,
      "away_defensive_solidity_vs": 0.9605,
      "home_midfield_factor": 1.008,
      "away_midfield_factor": 0.998,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.5992,
      "away_avg_quality": 0.5058,
      "avg_quality_gap": 0.0934,
      "squad_value_gap_log": 0.7629,
      "top5_value_gap_log": 0.8044,
      "attack_value_gap_log": 0.8549,
      "elite_count_gap": 2,
      "combined_quality_gap": 0.2174,
      "stronger_lambda_boost": 0.1196,
      "weaker_lambda_suppression": 0.0696,
      "home_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.35
        },
        {
          "label": "duel_blend",
          "raw_xg": 1.2548,
          "n_duels": 6,
          "duel_confidence": 0.75,
          "result": 1.2786
        },
        {
          "label": "midfield_factor",
          "factor": 1.008,
          "result": 1.2888
        },
        {
          "label": "formation_bonus",
          "factor": 0.96,
          "result": 1.2373
        },
        {
          "label": "home_advantage",
          "factor": 1.3418,
          "result": 1.6601
        },
        {
          "label": "standing_factor",
          "factor": 0.9884,
          "result": 1.6409
        },
        {
          "label": "gk_opposition",
          "factor": 1.0107,
          "result": 1.6584
        },
        {
          "label": "defensive_solidity",
          "factor": 0.987,
          "result": 1.6367
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.1471,
          "result": 1.7838
        },
        {
          "label": "engine_clamp",
          "pre": 1.7838,
          "result": 1.7838,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": 0.2174,
          "factor": 1.1196,
          "pre": 1.7838,
          "result": 1.9971
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 1.9971
        },
        {
          "label": "bench_bonus",
          "side": "home",
          "bonus": 0.1662,
          "result": 2.1632
        },
        {
          "label": "fbref_blend",
          "side": "home",
          "applied": true,
          "blending_weight": 0.228,
          "empirical_lambda": 1.6494,
          "result": 2.046
        },
        {
          "label": "router_clamp",
          "pre": 2.046,
          "result": 2.046,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "second_leg",
          "applied": true,
          "factor": 1.02,
          "result": 2.087
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 1.05,
          "pre": 2.087,
          "result": 2.1914,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 2.191
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 2.191
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 2.191,
          "result": 2.191,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "competition_calibration",
          "applied": true,
          "reason": "competition_intensity_calibration",
          "samples": 124,
          "scale": 0.85,
          "observed_total_goals": 2.984,
          "result": 1.848
        }
      ],
      "away_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.35
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.8216,
          "n_duels": 6,
          "duel_confidence": 0.75,
          "result": 0.9537
        },
        {
          "label": "midfield_factor",
          "factor": 0.998,
          "result": 0.9518
        },
        {
          "label": "formation_bonus",
          "factor": 1.07,
          "result": 1.0184
        },
        {
          "label": "home_advantage",
          "factor": 1.0,
          "result": 1.0184
        },
        {
          "label": "standing_factor",
          "factor": 0.9461,
          "result": 0.9635
        },
        {
          "label": "gk_opposition",
          "factor": 1.0107,
          "result": 0.9738
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9605,
          "result": 0.9354
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.093,
          "result": 1.0284
        },
        {
          "label": "engine_clamp",
          "pre": 1.0284,
          "result": 1.0284,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": 0.2174,
          "factor": 0.9304,
          "pre": 1.0284,
          "result": 0.9568
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 0.9568
        },
        {
          "label": "bench_bonus",
          "side": "away",
          "bonus": 0.1308,
          "result": 1.0878
        },
        {
          "label": "fbref_blend",
          "side": "away",
          "applied": true,
          "blending_weight": 0.228,
          "empirical_lambda": 1.642,
          "result": 1.2142
        },
        {
          "label": "router_clamp",
          "pre": 1.2142,
          "result": 1.214,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "second_leg",
          "applied": true,
          "factor": 1.2,
          "result": 1.457
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 0.95,
          "pre": 1.457,
          "result": 1.3841,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 1.384
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.384
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 1.384,
          "result": 1.384,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "competition_calibration",
          "applied": true,
          "reason": "competition_intensity_calibration",
          "samples": 124,
          "scale": 0.85,
          "observed_total_goals": 2.984,
          "result": 1.191
        }
      ],
      "home_bench_lambda_bonus": 0.1662,
      "away_bench_lambda_bonus": 0.1308,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "fbref_team_priors": {
        "applied": true,
        "home_squad": "Villarreal",
        "away_squad": "Espanyol",
        "home_goals_per90": 1.3333333333333333,
        "away_goals_against_per90": 1.67,
        "away_goals_per90": 1.6666666666666667,
        "home_goals_against_per90": 1.33,
        "home_empirical_lambda": 1.649,
        "away_empirical_lambda": 1.642,
        "blending_weight": 0.228
      },
      "mismatch_score_pressure_applied": false,
      "competitive_underdog_floor_applied": false,
      "competitive_underdog_floor": 1.0,
      "competitive_underdog_floor_mode": "disabled_ablation",
      "pre_competitive_floor_home_lambda": 2.191,
      "pre_competitive_floor_away_lambda": 1.384,
      "pre_calibration_home_lambda": 2.046,
      "pre_calibration_away_lambda": 1.2142,
      "competition_calibration_applied": true,
      "competition_calibration_reason": "competition_intensity_calibration",
      "competition_calibration_samples": 124,
      "competition_observed_total_goals": 2.984,
      "competition_calibration_scale": 0.85,
      "neutral_share_preserved": false,
      "final_home_lambda": 1.848,
      "final_away_lambda": 1.191
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 10,
    "opponent_position": 18,
    "standing_lambda_multiplier": 0.9884,
    "attack_index": 0.997,
    "defense_concede_index": 0.967,
    "form_multiplier": 1.015,
    "team_attack_rate_contextual": 1.51,
    "opp_defense_rate_contextual": 1.46,
    "team_ppg": 1.26,
    "opponent_ppg": 1.01
  },
  "away_standing": {
    "available": true,
    "team_position": 18,
    "opponent_position": 10,
    "standing_lambda_multiplier": 0.9461,
    "attack_index": 0.907,
    "defense_concede_index": 0.967,
    "form_multiplier": 0.985,
    "team_attack_rate_contextual": 1.37,
    "opp_defense_rate_contextual": 1.46,
    "team_ppg": 1.01,
    "opponent_ppg": 1.26
  },
  "xgboost_reasoning": {
    "summary": "Antagonist + XGBoost match analysis for Villarreal vs Espanyol. Player statistics regressed using position-specific XGBoost models (G, D, M, F) with 2026-2027 FBref priors. Micro-duels resolved across 4-4-2 vs 4-2-3-1 (duel lambdas: Home 2.046, Away 1.214). Final calibrated Poisson lambdas: Home 1.848, Away 1.191 (most likely score 2-1).",
    "competition": "LaLiga",
    "model_coverage": {
      "home_starters_count": 11,
      "home_xgboost_players": 11,
      "home_fbref_players": 8,
      "away_starters_count": 11,
      "away_xgboost_players": 11,
      "away_fbref_players": 7,
      "home_bench_modelled": 7,
      "away_bench_modelled": 7
    },
    "team_priors": {
      "applied": true,
      "home_squad": "Villarreal",
      "away_squad": "Espanyol",
      "home_goals_per90": 1.3333333333333333,
      "away_goals_against_per90": 1.67,
      "away_goals_per90": 1.6666666666666667,
      "home_goals_against_per90": 1.33,
      "home_empirical_lambda": 1.649,
      "away_empirical_lambda": 1.642,
      "blending_weight": 0.228
    },
    "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.848,
      "away_lambda": 1.191,
      "micro_duel_home_lambda": 2.046,
      "micro_duel_away_lambda": 1.214
    },
    "calibration_and_pressure": {
      "competition_calibration_applied": true,
      "competition_calibration_scale": 0.85,
      "mismatch_pressure_applied": false,
      "underdog_floor_applied": false
    }
  },
  "timestamp": "2026-10-30T13:31:43Z",
  "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
  }
}