{
  "match_info": {
    "home_team": "Celta",
    "away_team": "Alavés",
    "tournament": "LaLiga",
    "date": "20261018",
    "timezone": "America/New_York",
    "home_formation": "3-4-3",
    "away_formation": "5-3-2",
    "lineup_status": "unconfirmed_official",
    "lineup_source": "/matches/get-lineups",
    "lineup_confirmed": false,
    "lineup_confidence": 0.75
  },
  "prediction": {
    "most_likely_score": "0-0",
    "home_goals": 0,
    "away_goals": 0,
    "most_likely_score_probability": 0.1828,
    "most_likely_winning_score_home": "1-0",
    "most_likely_winning_score_home_probability": 0.1541,
    "most_likely_winning_score_away": "0-1",
    "most_likely_winning_score_away_probability": 0.1523,
    "match_resolution": "draw",
    "predicted_winner": "Draw",
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.3427,
      "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": "0-0",
        "probability": 0.1828
      },
      {
        "score": "1-0",
        "probability": 0.1541
      },
      {
        "score": "0-1",
        "probability": 0.1523
      },
      {
        "score": "1-1",
        "probability": 0.1337
      },
      {
        "score": "2-0",
        "probability": 0.0669
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.1828,
      "0-1": 0.1523,
      "0-2": 0.0653,
      "0-3": 0.0185,
      "0-4": 0.0039,
      "0-5": 0.0007,
      "1-0": 0.1541,
      "1-1": 0.1337,
      "1-2": 0.0561,
      "1-3": 0.0159,
      "1-4": 0.0034,
      "1-5": 0.0006,
      "2-0": 0.0669,
      "2-1": 0.0568,
      "2-2": 0.0241,
      "2-3": 0.0068,
      "2-4": 0.0014,
      "3-0": 0.0191,
      "3-1": 0.0163,
      "3-2": 0.0069,
      "3-3": 0.002,
      "4-0": 0.0041,
      "4-1": 0.0035,
      "4-2": 0.0015,
      "5-0": 0.0007,
      "5-1": 0.0006
    },
    "outcome": {
      "home_win": 0.3314,
      "draw": 0.3427,
      "away_win": 0.3259
    },
    "markets": {
      "over_2_5_goals": 0.2449,
      "under_2_5_goals": 0.7551,
      "btts_yes": 0.3314,
      "btts_no": 0.6686,
      "home_clean_sheet": 0.4278,
      "away_clean_sheet": 0.4236
    },
    "home_ratings": {
      "DR": 6.87,
      "MCR": 6.81,
      "ATR": 6.78,
      "GK": 6.94
    },
    "away_ratings": {
      "DR": 6.74,
      "MCR": 6.86,
      "ATR": 6.77,
      "GK": 7.05
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Celta vs Alavés. Most likely scoreline: 0-0. Lambdas derived from 5 home and 6 away individual player duels. Head-to-head: Celta 6W-2D-2L vs Alavés over 10 meetings.",
      "key_player": "Toni Martínez (ST) — Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle [0.330 xG]",
      "tactical_analysis": "Tactical parity between 3-4-3 and 5-3-2. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Aleix Febas vs Antonio Blanco will be the pivotal duel. Total antagonist xG — Home: 0.62, Away: 0.85. Home danger zone: Shadow Striker vs Centre Back — Half-Space Threat. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle."
    },
    "confidence": 0.69,
    "home_lambda": 0.859,
    "away_lambda": 0.849,
    "h2h": {
      "available": true,
      "meetings": 10,
      "home_wins": 6,
      "away_wins": 2,
      "draws": 2,
      "home_multiplier": 1.0286,
      "away_multiplier": 0.9714
    },
    "modal_scoreline": "0-0",
    "modal_scoreline_probability": 0.1828,
    "headline_policy": null
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.3314,
      "draw": 0.3427,
      "away_win": 0.3259
    },
    "favorite": "Celta",
    "favorite_win_probability": 0.3314,
    "fair_spread": 0.01,
    "fair_total": 1.708,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Celta",
        "estimate": 0.859,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Alavés",
        "estimate": 0.849,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.2449,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.3314,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Celta",
        "estimate": 1.0,
        "probability": 0.4278,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Alavés",
        "estimate": 1.0,
        "probability": 0.4236,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Ferrán Jutglà (Celta)",
        "estimate": 0.2113,
        "probability": 0.1905,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Toni Martínez (Alavés)",
        "estimate": 0.2426,
        "probability": 0.2154,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Aleix Febas (Celta)",
        "estimate": 0.0944,
        "probability": 0.0901,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Denis Suárez (Alavés)",
        "estimate": 0.1683,
        "probability": 0.1549,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "low",
      "expected_total_goals": 1.708,
      "expected_total_shots": 21,
      "expected_total_passes": 758,
      "expected_pressing_actions_per_90": 12.4,
      "possession_home_pct": 49.3,
      "possession_away_pct": 50.7,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Celta",
      "favorite_win_probability": 0.3314,
      "script": "Celta is the fair winner side, but the baseline remains draw-heavy: fair spread +0.01 goals and fair total 1.71.",
      "first_half": "Expect low tempo while both sides test the matchup thesis; shot baseline is about 10 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; Alavés must keep the match inside one goal.",
      "late_game": "A Celta lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Alavés chance creation leans on Toni Martínez against Yoel Lago, Sebastián Cáceres in Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "Celta: starters carry the main goal usage through the highest xG attackers; bench watchlist: Fer López, Jones El-Abdellaoui.",
      "Alavés: starters carry the main goal usage through the highest xG attackers; bench watchlist: Miguel Rodríguez, Carles Aleñá.",
      "Assist usage should flow through the projected key-pass leaders; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Celta tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects low tempo, about 10 total first-half shots, and 0.85 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 Alavés 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 Celta.",
      "Alavés 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": {
    "Celta": {
      "formation": "3-4-3",
      "players": {
        "Hugo Álvarez": {
          "player_id": 1154935,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 23,
          "height": 176,
          "market_value": 7800000,
          "stats": {
            "expected_goals": 0.1484,
            "goal_rate": 0.1505,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0856,
            "key_pass": 1,
            "rating": 6.8448,
            "minutes": 73,
            "total_pass": 26,
            "accurate_pass": 22,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 15,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 37,
            "possession_lost": 8.1388,
            "dispossessed": 0.7783,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.3603,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.1171,
            "offsides": 0,
            "ball_carries": 10,
            "total_progression": 60,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9637,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.425,
            "pressing_faced": "LOW",
            "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
            "numerical_situation": "1v1",
            "opponent_defenders": "Ville Koski",
            "opponent_faced": "Ville Koski",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1379,
            "projected_assists": 0,
            "assist_probability": 0.082,
            "finishing_factor": 1.0992,
            "creation_factor": 1.25,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16421058,
              "match_date": "2026-10-11",
              "home_team": "Elche",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 71,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0586,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 18,
                "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": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "assist_rate": 2.0,
                "assists": 2,
                "expected_assists": 0.4166,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 24,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 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": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 74,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1813,
                "expected_assists": 0.0707,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 16,
                "key_pass": 1,
                "interceptions": 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": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 33,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0254,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 13,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 25,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0622,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 12,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 57,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.033,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 23,
                "key_pass": 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": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 25,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1371,
                "expected_assists": 0.0314,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 8,
                "key_pass": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 16,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0128,
                "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": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 66,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1692,
                "expected_assists": 0.026,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 31,
                "accurate_pass": 22,
                "key_pass": 1,
                "clearances": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083551,
              "match_date": "2026-05-09",
              "home_team": "Atlético Madrid",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 13,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.006,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3534,
            "combined_rank_score": 1503.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 592.0,
            "sofascore_rating": 6.7893,
            "sofascore_appearances": 28.0,
            "fifa_rank": 2415.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.8448,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hugo Álvarez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yuito Suzuki",
                  "ranking": 3529
                },
                {
                  "player_name": "Tim Lemperle",
                  "ranking": 3530
                },
                {
                  "player_name": "Nicolò Savona",
                  "ranking": 3531
                },
                {
                  "player_name": "Pablo Torre",
                  "ranking": 3532
                },
                {
                  "player_name": "Paul Nebel",
                  "ranking": 3533
                }
              ],
              "lower": [
                {
                  "player_name": "Israel Reyes",
                  "ranking": 3535
                },
                {
                  "player_name": "Rocco Reitz",
                  "ranking": 3536
                },
                {
                  "player_name": "Chrislain Matsima",
                  "ranking": 3537
                },
                {
                  "player_name": "Yan Couto",
                  "ranking": 3538
                },
                {
                  "player_name": "Enes Ünal",
                  "ranking": 3539
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.763,
          "history_matches": 34,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 34,
            "data_confidence": 0.763,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9997,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "minutes": 116.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0867
            },
            "rationale": "XGBoost regressor (F_service) evaluated 34 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Celta Vigo, rel: 0.09, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1374,
                "goals": 0.1573,
                "goal_rate": 0.1573,
                "shots_on_target": 0.4239,
                "total_shots": 1.2192,
                "expected_assists": 0.0764,
                "key_pass": 1.0007,
                "rating": 6.8448,
                "minutes": 72.56,
                "total_pass": 26.1703,
                "accurate_pass": 22.3194,
                "duels_won": 2.0114,
                "total_long_balls": 0.7817,
                "accurate_long_balls": 0.3661,
                "total_opp_half_passes": 18.1622,
                "accurate_opp_half_passes": 15.452,
                "crosses_total": 1.0001,
                "crosses_accurate": 0.4697,
                "touches": 37.2057,
                "possession_lost": 8.1412,
                "dispossessed": 0.7785,
                "duels_lost": 3.7712,
                "aerial_lost": 0.5066,
                "total_contest": 1.7875,
                "won_contest": 0.4708,
                "ball_recovery": 1.9354,
                "challenges_lost": 0.3952,
                "fouls": 0.9195,
                "fouls_drawn": 0.9126,
                "assists": 0.363,
                "assist_rate": 0.363,
                "interceptions": 0.591,
                "tackles_won": 0.4651,
                "tackles": 0.6163,
                "clearances": 0.496,
                "blocks": 0.0,
                "big_chances_created": 0.5451,
                "big_chances_missed": 0.1437,
                "xgot": 0.1084,
                "offsides": 0.0269,
                "ball_carries": 10.4065,
                "total_progression": 59.5706,
                "progressive_carries": 2.4192,
                "shots_off_target": 0.7953
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Elche",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1506,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 8.1
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 33.0,
                    "is_starting": false,
                    "weight": 0.0925,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0786,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 57.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0568,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0483,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Atlético Madrid",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 14.3822,
                  "expectedGoals": 0.0748,
                  "accurateOppositionHalfPasses": 11.9991,
                  "accuratePass": 17.5938,
                  "totalShots": 0.3951
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.13744239509105682,
                    "model_output": 0.1374,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0626
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0517
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0234
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0114
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0092
                        }
                      ],
                      "others": -0.027,
                      "total": 0.1374,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.275467
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.22138
                        },
                        {
                          "name": "goals",
                          "margin": -0.119216
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.063842
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.054353
                        }
                      ],
                      "others_margin": -0.179309
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.15730200707912445,
                    "model_output": 0.1573,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0734
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0459
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0233
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0163
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0141
                        }
                      ],
                      "others": -0.0525,
                      "total": 0.1573,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.308298
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.181392
                        },
                        {
                          "name": "goals",
                          "margin": -0.10621
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.075614
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.065256
                        }
                      ],
                      "others_margin": -0.287851
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.42389437556266785,
                    "model_output": 0.4239,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1714
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0823
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.057
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0432
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0323
                        }
                      ],
                      "others": -0.1349,
                      "total": 0.4239,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.276728
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.123436
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.095295
                        },
                        {
                          "name": "goals",
                          "margin": -0.078838
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.059605
                        }
                      ],
                      "others_margin": -0.276487
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.2191863059997559,
                    "model_output": 1.2192,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4185
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2206
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0765
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0587
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.056
                        }
                      ],
                      "others": -0.1613,
                      "total": 1.2192,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.418502
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.220573
                        },
                        {
                          "name": "goals",
                          "margin": -0.076539
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.058693
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.056048
                        }
                      ],
                      "others_margin": -0.161302
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07640817761421204,
                    "model_output": 0.0764,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0108
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0093
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0054
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0056
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0045
                        }
                      ],
                      "others": -0.0048,
                      "total": 0.0764,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.155199
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.132076
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.078903
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.075557
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.057358
                        }
                      ],
                      "others_margin": -0.061095
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.000749945640564,
                    "model_output": 1.0007,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1623
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0993
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0975
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0746
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.03
                        }
                      ],
                      "others": 0.0129,
                      "total": 1.0008,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.215915
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.112279
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.099226
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.075006
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.030886
                        }
                      ],
                      "others_margin": 0.012911
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.844758033752441,
                    "model_output": 6.8448,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0609
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0208
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0194
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0184
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0168
                        }
                      ],
                      "others": 0.0167,
                      "total": 6.8448,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.060901
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.020787
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.019425
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.018415
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.016776
                        }
                      ],
                      "others_margin": 0.016577
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 34,
                  "role_matches": 19,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9997, quality 0.496)",
              "stats": {
                "expected_goals": 0.1374,
                "goals": 0.1573,
                "goal_rate": 0.1573,
                "shots_on_target": 0.4238,
                "total_shots": 1.2189,
                "expected_assists": 0.0764,
                "key_pass": 1.0004,
                "rating": 6.8448,
                "minutes": 72.56,
                "total_pass": 26.1624,
                "accurate_pass": 22.3127,
                "duels_won": 2.0108,
                "total_long_balls": 0.7815,
                "accurate_long_balls": 0.366,
                "total_opp_half_passes": 18.1568,
                "accurate_opp_half_passes": 15.4474,
                "crosses_total": 0.9998,
                "crosses_accurate": 0.4696,
                "touches": 37.1945,
                "possession_lost": 8.1388,
                "dispossessed": 0.7783,
                "duels_lost": 3.7701,
                "aerial_lost": 0.5064,
                "total_contest": 1.787,
                "won_contest": 0.4707,
                "ball_recovery": 1.9348,
                "challenges_lost": 0.3951,
                "fouls": 0.9192,
                "fouls_drawn": 0.9123,
                "assists": 0.3629,
                "assist_rate": 0.3629,
                "interceptions": 0.5908,
                "tackles_won": 0.465,
                "tackles": 0.6161,
                "clearances": 0.4959,
                "blocks": 0.0,
                "big_chances_created": 0.5449,
                "big_chances_missed": 0.1437,
                "xgot": 0.1084,
                "offsides": 0.0269,
                "ball_carries": 10.4034,
                "total_progression": 59.5527,
                "progressive_carries": 2.4185,
                "shots_off_target": 0.7951
              },
              "params": {
                "market_value_eur": 7800000,
                "quality_factor": 0.4963,
                "boost_factor": 0.9997,
                "reference_quality": 0.505,
                "history_matches": 34,
                "history_shrink": 0.1282,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0072)",
              "stats": {
                "expected_goals": 0.1374,
                "goals": 0.1562,
                "goal_rate": 0.1562,
                "shots_on_target": 0.4207,
                "total_shots": 1.2101,
                "expected_assists": 0.0764,
                "key_pass": 1.0004,
                "rating": 6.8448,
                "minutes": 72.56,
                "total_pass": 26.1624,
                "accurate_pass": 22.3127,
                "duels_won": 2.0108,
                "total_long_balls": 0.7815,
                "accurate_long_balls": 0.366,
                "total_opp_half_passes": 18.1568,
                "accurate_opp_half_passes": 15.4474,
                "crosses_total": 1.0195,
                "crosses_accurate": 0.4696,
                "touches": 37.1945,
                "possession_lost": 8.1388,
                "dispossessed": 0.7783,
                "duels_lost": 3.7701,
                "aerial_lost": 0.5064,
                "total_contest": 1.787,
                "won_contest": 0.4707,
                "ball_recovery": 1.9348,
                "challenges_lost": 0.3951,
                "fouls": 0.9215,
                "fouls_drawn": 0.9102,
                "assists": 0.3603,
                "assist_rate": 0.3603,
                "interceptions": 0.5865,
                "tackles_won": 0.4616,
                "tackles": 0.6161,
                "clearances": 0.4959,
                "blocks": 0.0,
                "big_chances_created": 0.5449,
                "big_chances_missed": 0.1437,
                "xgot": 0.1084,
                "offsides": 0.0267,
                "ball_carries": 10.4034,
                "total_progression": 59.5527,
                "progressive_carries": 2.4185,
                "shots_off_target": 0.7951
              },
              "params": {
                "blend_weight": 0.0072,
                "history_matches": 34,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8062,
                "prior_reliability": 0.0867,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.9998,
                  "after": 1.0195
                },
                {
                  "stat": "totalShots",
                  "before": 1.2189,
                  "after": 1.2101
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1374,
                "goals": 0.1562,
                "goal_rate": 0.1562,
                "shots_on_target": 0.4207,
                "total_shots": 1.2158,
                "expected_assists": 0.0764,
                "key_pass": 1.0004,
                "rating": 6.8448,
                "minutes": 72.56,
                "total_pass": 26.1624,
                "accurate_pass": 22.3127,
                "duels_won": 2.0108,
                "total_long_balls": 0.7815,
                "accurate_long_balls": 0.366,
                "total_opp_half_passes": 18.1568,
                "accurate_opp_half_passes": 15.4474,
                "crosses_total": 1.0195,
                "crosses_accurate": 0.4696,
                "touches": 37.1945,
                "possession_lost": 8.1388,
                "dispossessed": 0.7783,
                "duels_lost": 3.7701,
                "aerial_lost": 0.5064,
                "total_contest": 1.787,
                "won_contest": 0.4707,
                "ball_recovery": 1.9348,
                "challenges_lost": 0.3951,
                "fouls": 0.9215,
                "fouls_drawn": 0.9102,
                "assists": 0.3603,
                "assist_rate": 0.3603,
                "interceptions": 0.5865,
                "tackles_won": 0.4616,
                "tackles": 0.6161,
                "clearances": 0.4959,
                "blocks": 0.0,
                "big_chances_created": 0.5449,
                "big_chances_missed": 0.1437,
                "xgot": 0.1084,
                "offsides": 0.0267,
                "ball_carries": 10.4034,
                "total_progression": 59.5527,
                "progressive_carries": 2.4185,
                "shots_off_target": 0.7951
              },
              "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.1324,
                "goals": 0.1505,
                "goal_rate": 0.1505,
                "shots_on_target": 0.4054,
                "total_shots": 1.1717,
                "expected_assists": 0.0764,
                "key_pass": 1.0004,
                "rating": 6.8448,
                "minutes": 72.56,
                "total_pass": 26.1624,
                "accurate_pass": 22.3127,
                "duels_won": 2.0108,
                "total_long_balls": 0.7815,
                "accurate_long_balls": 0.366,
                "total_opp_half_passes": 18.1568,
                "accurate_opp_half_passes": 15.4474,
                "crosses_total": 1.0195,
                "crosses_accurate": 0.4696,
                "touches": 37.1945,
                "possession_lost": 8.1388,
                "dispossessed": 0.7783,
                "duels_lost": 3.7701,
                "aerial_lost": 0.5064,
                "total_contest": 1.787,
                "won_contest": 0.4707,
                "ball_recovery": 1.9348,
                "challenges_lost": 0.3951,
                "fouls": 0.9215,
                "fouls_drawn": 0.9102,
                "assists": 0.3603,
                "assist_rate": 0.3603,
                "interceptions": 0.5865,
                "tackles_won": 0.4616,
                "tackles": 0.6161,
                "clearances": 0.4959,
                "blocks": 0.0,
                "big_chances_created": 0.5449,
                "big_chances_missed": 0.1385,
                "xgot": 0.1045,
                "offsides": 0.0267,
                "ball_carries": 10.4034,
                "total_progression": 59.5527,
                "progressive_carries": 2.4185,
                "shots_off_target": 0.7662,
                "duel_xg_multiplier": 0.9637,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.425,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ville Koski",
                  "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                  "duel_win_rate": 0.425,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9637,
                  "skill_edge": 0.0113,
                  "height_edge": -0.036,
                  "attacker_skill": 0.4963,
                  "defender_skill": 0.4712,
                  "attacker_role": "SS",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Ville Koski",
                      "market_value": 4300000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4712
                    }
                  ],
                  "xg_override": 0.1324
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.2158,
                  "after": 1.1717
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.7951,
                  "after": 0.7662
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4207,
                  "after": 0.4054
                },
                {
                  "stat": "goals",
                  "before": 0.1562,
                  "after": 0.1505
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1437,
                  "after": 0.1385
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1374,
                  "after": 0.1324
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1324,
                "goal_rate": 0.1505,
                "goals": 0,
                "shots_on_target": 0.4054,
                "total_shots": 1.1717,
                "expected_assists": 0.0764,
                "key_pass": 1.0004,
                "rating": 6.8448,
                "minutes": 72.56,
                "total_pass": 26.1624,
                "accurate_pass": 22.3127,
                "duels_won": 2.0108,
                "total_long_balls": 0.7815,
                "accurate_long_balls": 0.366,
                "total_opp_half_passes": 18.1568,
                "accurate_opp_half_passes": 15.4474,
                "crosses_total": 1.0195,
                "crosses_accurate": 0.4696,
                "touches": 37.1945,
                "possession_lost": 8.1388,
                "dispossessed": 0.7783,
                "duels_lost": 3.7701,
                "aerial_lost": 0.5064,
                "total_contest": 1.787,
                "won_contest": 0.4707,
                "ball_recovery": 1.9348,
                "challenges_lost": 0.3951,
                "fouls": 0.9215,
                "fouls_drawn": 0.9102,
                "assist_rate": 0.3603,
                "assists": 0,
                "interceptions": 0.5865,
                "tackles_won": 0.4616,
                "tackles": 0.6161,
                "clearances": 0.4959,
                "blocks": 0.0,
                "big_chances_created": 0.5449,
                "big_chances_missed": 0.1385,
                "xgot": 0.1045,
                "offsides": 0.0267,
                "ball_carries": 10.4034,
                "total_progression": 59.5527,
                "progressive_carries": 2.4185,
                "shots_off_target": 0.7662,
                "duel_xg_multiplier": 0.9637,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.425,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.1484,
                "goal_rate": 0.1505,
                "goals": 0,
                "shots_on_target": 0.4054,
                "total_shots": 1.1717,
                "expected_assists": 0.0856,
                "key_pass": 1.0004,
                "rating": 6.8448,
                "minutes": 72.56,
                "total_pass": 26.1624,
                "accurate_pass": 22.3127,
                "duels_won": 2.0108,
                "total_long_balls": 0.7815,
                "accurate_long_balls": 0.366,
                "total_opp_half_passes": 18.1568,
                "accurate_opp_half_passes": 15.4474,
                "crosses_total": 1.0195,
                "crosses_accurate": 0.4696,
                "touches": 37.1945,
                "possession_lost": 8.1388,
                "dispossessed": 0.7783,
                "duels_lost": 3.7701,
                "aerial_lost": 0.5064,
                "total_contest": 1.787,
                "won_contest": 0.4707,
                "ball_recovery": 1.9348,
                "challenges_lost": 0.3951,
                "fouls": 0.9215,
                "fouls_drawn": 0.9102,
                "assist_rate": 0.3603,
                "assists": 0,
                "interceptions": 0.5865,
                "tackles_won": 0.4616,
                "tackles": 0.6161,
                "clearances": 0.4959,
                "blocks": 0.0,
                "big_chances_created": 0.5449,
                "big_chances_missed": 0.1385,
                "xgot": 0.1171,
                "offsides": 0.0267,
                "ball_carries": 10.4034,
                "total_progression": 59.5527,
                "progressive_carries": 2.4185,
                "shots_off_target": 0.7662,
                "duel_xg_multiplier": 0.9637,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.425,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0992,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1324,
                  "after": 0.1484
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0764,
                  "after": 0.0856
                }
              ]
            },
            {
              "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": {
                "expected_goals": 0.1484,
                "goal_rate": 0.1505,
                "goals": 0,
                "shots_on_target": 0.4054,
                "total_shots": 1.1717,
                "expected_assists": 0.0856,
                "key_pass": 1.0004,
                "rating": 6.8448,
                "minutes": 72.56,
                "total_pass": 26.1624,
                "accurate_pass": 22.3127,
                "duels_won": 2.0108,
                "total_long_balls": 0.7815,
                "accurate_long_balls": 0.366,
                "total_opp_half_passes": 18.1568,
                "accurate_opp_half_passes": 15.4474,
                "crosses_total": 1.0195,
                "crosses_accurate": 0.4696,
                "touches": 37.1945,
                "possession_lost": 8.1388,
                "dispossessed": 0.7783,
                "duels_lost": 3.7701,
                "aerial_lost": 0.5064,
                "total_contest": 1.787,
                "won_contest": 0.4707,
                "ball_recovery": 1.9348,
                "challenges_lost": 0.3951,
                "fouls": 0.9215,
                "fouls_drawn": 0.9102,
                "assist_rate": 0.3603,
                "assists": 0,
                "interceptions": 0.5865,
                "tackles_won": 0.4616,
                "tackles": 0.6161,
                "clearances": 0.4959,
                "blocks": 0.0,
                "big_chances_created": 0.5449,
                "big_chances_missed": 0.1385,
                "xgot": 0.1171,
                "offsides": 0.0267,
                "ball_carries": 10.4034,
                "total_progression": 59.5527,
                "progressive_carries": 2.4185,
                "shots_off_target": 0.7662,
                "duel_xg_multiplier": 0.9637,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.425,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0992,
                "creation_factor": 1.25,
                "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": 3534,
                "fifa_rank": 2415.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.1484,
                "goal_rate": 0.1505,
                "goals": 0,
                "shots_on_target": 0.4054,
                "total_shots": 1.1717,
                "expected_assists": 0.0856,
                "key_pass": 1.0004,
                "rating": 6.8448,
                "minutes": 72.56,
                "total_pass": 26.1624,
                "accurate_pass": 22.3127,
                "duels_won": 2.0108,
                "total_long_balls": 0.7815,
                "accurate_long_balls": 0.366,
                "total_opp_half_passes": 18.1568,
                "accurate_opp_half_passes": 15.4474,
                "crosses_total": 1.0195,
                "crosses_accurate": 0.4696,
                "touches": 37.1945,
                "possession_lost": 8.1388,
                "dispossessed": 0.7783,
                "duels_lost": 3.7701,
                "aerial_lost": 0.5064,
                "total_contest": 1.787,
                "won_contest": 0.4707,
                "ball_recovery": 1.9348,
                "challenges_lost": 0.3951,
                "fouls": 0.9215,
                "fouls_drawn": 0.9102,
                "assist_rate": 0.3603,
                "assists": 0,
                "interceptions": 0.5865,
                "tackles_won": 0.4616,
                "tackles": 0.6161,
                "clearances": 0.4959,
                "blocks": 0.0,
                "big_chances_created": 0.5449,
                "big_chances_missed": 0.1385,
                "xgot": 0.1171,
                "offsides": 0.0267,
                "ball_carries": 10.4034,
                "total_progression": 59.5527,
                "progressive_carries": 2.4185,
                "shots_off_target": 0.7662,
                "duel_xg_multiplier": 0.9637,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.425,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1379,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0992,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.1379,
                "goal_rate": 0.1505,
                "scorer_weight": 0.1631,
                "squad_weight_total": 0.9142,
                "weight_share": 0.1784,
                "finishing_factor": 1.0992,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1484,
                "goal_rate": 0.1505,
                "goals": 0,
                "shots_on_target": 0.4054,
                "total_shots": 1.1717,
                "expected_assists": 0.0856,
                "key_pass": 1.0004,
                "rating": 6.8448,
                "minutes": 72.56,
                "total_pass": 26.1624,
                "accurate_pass": 22.3127,
                "duels_won": 2.0108,
                "total_long_balls": 0.7815,
                "accurate_long_balls": 0.366,
                "total_opp_half_passes": 18.1568,
                "accurate_opp_half_passes": 15.4474,
                "crosses_total": 1.0195,
                "crosses_accurate": 0.4696,
                "touches": 37.1945,
                "possession_lost": 8.1388,
                "dispossessed": 0.7783,
                "duels_lost": 3.7701,
                "aerial_lost": 0.5064,
                "total_contest": 1.787,
                "won_contest": 0.4707,
                "ball_recovery": 1.9348,
                "challenges_lost": 0.3951,
                "fouls": 0.9215,
                "fouls_drawn": 0.9102,
                "assist_rate": 0.3603,
                "assists": 0,
                "interceptions": 0.5865,
                "tackles_won": 0.4616,
                "tackles": 0.6161,
                "clearances": 0.4959,
                "blocks": 0.0,
                "big_chances_created": 0.5449,
                "big_chances_missed": 0.1385,
                "xgot": 0.1171,
                "offsides": 0.0267,
                "ball_carries": 10.4034,
                "total_progression": 59.5527,
                "progressive_carries": 2.4185,
                "shots_off_target": 0.7662,
                "duel_xg_multiplier": 0.9637,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.425,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1379,
                "projected_assists": 0,
                "assist_probability": 0.082,
                "finishing_factor": 1.0992,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.082,
                "assist_rate": 0.3603,
                "provider_weight": 0.107,
                "squad_weight_total": 0.6035,
                "weight_share": 0.1773,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12
              }
            }
          ]
        },
        "Iago Aspas": {
          "player_id": 19356,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 176,
          "market_value": 1500000,
          "stats": {
            "expected_goals": 0.1625,
            "goal_rate": 0.1677,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0893,
            "key_pass": 1,
            "rating": 6.7839,
            "minutes": 67,
            "total_pass": 29,
            "accurate_pass": 22,
            "duels_won": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 15,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 37,
            "possession_lost": 9.3955,
            "dispossessed": 0.6841,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2208,
            "offsides": 0,
            "ball_carries": 9,
            "total_progression": 23,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9395,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 1,
            "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": "Ville Koski, Nahuel Tenaglia",
            "opponent_faced": "Ville Koski, Nahuel Tenaglia",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.15,
            "projected_assists": 0,
            "assist_probability": 0.0854,
            "finishing_factor": 1.1164,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 11,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0393,
                "expected_assists": 0.001,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 5,
                "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": 16416348,
              "match_date": "2026-09-07",
              "home_team": "Getafe",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Getafe",
              "stats": {
                "minutes": 64,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0415,
                "expected_assists": 0.0308,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 35,
                "accurate_pass": 29,
                "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": 16416340,
              "match_date": "2026-09-03",
              "home_team": "Real Sociedad",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 27,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1804,
                "expected_assists": 0.0499,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 24,
                "accurate_pass": 24
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.048,
                "expected_assists": 0.0637,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 16,
                "key_pass": 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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 52,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0628,
                "expected_assists": 0.0136,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 22,
                "accurate_pass": 18,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 26,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0357,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 18,
                "key_pass": 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": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 66,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0603,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 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": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 31,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0056,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 12,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 66,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0802,
                "expected_assists": 0.2911,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 25,
                "accurate_pass": 21,
                "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": 14083551,
              "match_date": "2026-05-09",
              "home_team": "Atlético Madrid",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 22,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0089,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 10
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 1065,
            "combined_rank_score": 479.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 391.0,
            "sofascore_rating": 6.95,
            "sofascore_appearances": 4.0,
            "fifa_rank": 568.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7839,
            "source_file": "data/player_rankings.csv",
            "player_name": "Iago Aspas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Raz Shlomo",
                  "ranking": 1060
                },
                {
                  "player_name": "Adrian Leon Barišić",
                  "ranking": 1061
                },
                {
                  "player_name": "Chang-hoon Lee",
                  "ranking": 1062
                },
                {
                  "player_name": "Rayan Aït-Nouri",
                  "ranking": 1063
                },
                {
                  "player_name": "Anatoliy Trubin",
                  "ranking": 1064
                }
              ],
              "lower": [
                {
                  "player_name": "Hyun-muk Kang",
                  "ranking": 1066
                },
                {
                  "player_name": "Asadbek Rakhimjonov",
                  "ranking": 1067
                },
                {
                  "player_name": "Noni Madueke",
                  "ranking": 1068
                },
                {
                  "player_name": "Álvaro Madrid",
                  "ranking": 1069
                },
                {
                  "player_name": "Marius Marin",
                  "ranking": 1070
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.767,
          "history_matches": 38,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 38,
            "data_confidence": 0.767,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9976,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 4.0,
              "starts": 1.0,
              "minutes": 151.0,
              "goals_per90": 0.5882352941176471,
              "assists_per90": 0.0,
              "shots_per90": 2.38,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.1133
            },
            "rationale": "XGBoost regressor (F_service) evaluated 38 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Celta Vigo, rel: 0.11, gls/90: 0.5882352941176471, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1547,
                "goals": 0.1767,
                "goal_rate": 0.1767,
                "shots_on_target": 0.5363,
                "total_shots": 1.4308,
                "expected_assists": 0.0799,
                "key_pass": 0.8398,
                "rating": 6.7839,
                "minutes": 66.99,
                "total_pass": 28.6543,
                "accurate_pass": 22.3725,
                "duels_won": 2.5991,
                "total_long_balls": 2.703,
                "accurate_long_balls": 1.3974,
                "total_opp_half_passes": 20.3286,
                "accurate_opp_half_passes": 15.1592,
                "crosses_total": 0.7893,
                "crosses_accurate": 0.1186,
                "touches": 37.3176,
                "possession_lost": 9.4181,
                "dispossessed": 0.6857,
                "duels_lost": 3.1751,
                "aerial_lost": 0.5106,
                "total_contest": 1.0302,
                "won_contest": 0.5282,
                "ball_recovery": 2.0544,
                "challenges_lost": 1.1412,
                "fouls": 0.3356,
                "fouls_drawn": 1.0982,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3709,
                "tackles_won": 0.5208,
                "tackles": 0.6836,
                "clearances": 0.0757,
                "blocks": 0.0,
                "big_chances_created": 0.3164,
                "big_chances_missed": 0.0243,
                "xgot": 0.2102,
                "offsides": 0.0,
                "ball_carries": 9.4165,
                "total_progression": 23.0185,
                "progressive_carries": 0.9192,
                "shots_off_target": 0.8945
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1503,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-07",
                    "opponent": "Getafe",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-03",
                    "opponent": "Real Sociedad",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1086,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0923,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 52.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.0482,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Atlético Madrid",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 14.8216,
                  "expectedGoals": 0.0692,
                  "accurateOppositionHalfPasses": 11.7345,
                  "accuratePass": 16.0728,
                  "totalShots": 0.8921
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.15470285713672638,
                    "model_output": 0.1547,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0682
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0532
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0129
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0089
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.008
                        }
                      ],
                      "others": -0.044,
                      "total": 0.1547,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.296741
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.223269
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.062651
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.045395
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.041192
                        }
                      ],
                      "others_margin": -0.25095
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.17672252655029297,
                    "model_output": 0.1767,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0662
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0353
                        },
                        {
                          "name": "goals",
                          "contribution": -0.018
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0107
                        },
                        {
                          "name": "shot_waste_rate",
                          "contribution": 0.0066
                        }
                      ],
                      "others": -0.0355,
                      "total": 0.1767,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.281664
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.140517
                        },
                        {
                          "name": "goals",
                          "margin": -0.080174
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.050905
                        },
                        {
                          "name": "shot_waste_rate",
                          "margin": 0.031685
                        }
                      ],
                      "others_margin": -0.182138
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5362552404403687,
                    "model_output": 0.5363,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.18
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0718
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0473
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0305
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0279
                        }
                      ],
                      "others": -0.0648,
                      "total": 0.5363,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.288771
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.105463
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.075988
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.049711
                        },
                        {
                          "name": "goals",
                          "margin": -0.045441
                        }
                      ],
                      "others_margin": -0.114185
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.4307163953781128,
                    "model_output": 1.4307,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4292
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2297
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0529
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0517
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0373
                        }
                      ],
                      "others": -0.0753,
                      "total": 1.4307,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.429236
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.229693
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.052905
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.051691
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.037266
                        }
                      ],
                      "others_margin": -0.075337
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07991844415664673,
                    "model_output": 0.0799,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0126
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0104
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0096
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0056
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0037
                        }
                      ],
                      "others": 0.002,
                      "total": 0.0799,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.178679
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.145751
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.135295
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.071582
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.046948
                        }
                      ],
                      "others_margin": 0.025904
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.8397940397262573,
                    "model_output": 0.8398,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1568
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0763
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0684
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0619
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0568
                        }
                      ],
                      "others": 0.0124,
                      "total": 0.8398,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.209357
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.096423
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.086802
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.07256
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.066456
                        }
                      ],
                      "others_margin": 0.015023
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.783908367156982,
                    "model_output": 6.7839,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0559
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0206
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.018
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0151
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0144
                        }
                      ],
                      "others": -0.0423,
                      "total": 6.7839,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.055863
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.020567
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.017988
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.015072
                        },
                        {
                          "name": "touches",
                          "margin": -0.014426
                        }
                      ],
                      "others_margin": -0.042184
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 38,
                  "role_matches": 13,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9976, quality 0.437)",
              "stats": {
                "expected_goals": 0.1543,
                "goals": 0.1763,
                "goal_rate": 0.1763,
                "shots_on_target": 0.535,
                "total_shots": 1.4274,
                "expected_assists": 0.0797,
                "key_pass": 0.8378,
                "rating": 6.7839,
                "minutes": 66.99,
                "total_pass": 28.5855,
                "accurate_pass": 22.3188,
                "duels_won": 2.5929,
                "total_long_balls": 2.6965,
                "accurate_long_balls": 1.394,
                "total_opp_half_passes": 20.2798,
                "accurate_opp_half_passes": 15.1228,
                "crosses_total": 0.7874,
                "crosses_accurate": 0.1183,
                "touches": 37.228,
                "possession_lost": 9.3955,
                "dispossessed": 0.6841,
                "duels_lost": 3.1675,
                "aerial_lost": 0.5094,
                "total_contest": 1.0277,
                "won_contest": 0.5269,
                "ball_recovery": 2.0495,
                "challenges_lost": 1.1385,
                "fouls": 0.3348,
                "fouls_drawn": 1.0956,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.37,
                "tackles_won": 0.5196,
                "tackles": 0.682,
                "clearances": 0.0755,
                "blocks": 0.0,
                "big_chances_created": 0.3156,
                "big_chances_missed": 0.0242,
                "xgot": 0.2097,
                "offsides": 0.0,
                "ball_carries": 9.3939,
                "total_progression": 22.9633,
                "progressive_carries": 0.917,
                "shots_off_target": 0.8924
              },
              "params": {
                "market_value_eur": 1500000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9976,
                "reference_quality": 0.505,
                "history_matches": 38,
                "history_shrink": 0.1163,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0086)",
              "stats": {
                "expected_goals": 0.1543,
                "goals": 0.1785,
                "goal_rate": 0.1785,
                "shots_on_target": 0.538,
                "total_shots": 1.4303,
                "expected_assists": 0.0797,
                "key_pass": 0.8378,
                "rating": 6.7839,
                "minutes": 66.99,
                "total_pass": 28.5855,
                "accurate_pass": 22.3188,
                "duels_won": 2.5929,
                "total_long_balls": 2.6965,
                "accurate_long_balls": 1.394,
                "total_opp_half_passes": 20.2798,
                "accurate_opp_half_passes": 15.1228,
                "crosses_total": 0.7807,
                "crosses_accurate": 0.1183,
                "touches": 37.228,
                "possession_lost": 9.3955,
                "dispossessed": 0.6841,
                "duels_lost": 3.1675,
                "aerial_lost": 0.5094,
                "total_contest": 1.0277,
                "won_contest": 0.5269,
                "ball_recovery": 2.0495,
                "challenges_lost": 1.1385,
                "fouls": 0.3319,
                "fouls_drawn": 1.09,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3668,
                "tackles_won": 0.5152,
                "tackles": 0.682,
                "clearances": 0.0755,
                "blocks": 0.0,
                "big_chances_created": 0.3156,
                "big_chances_missed": 0.0242,
                "xgot": 0.2097,
                "offsides": 0.0037,
                "ball_carries": 9.3939,
                "total_progression": 22.9633,
                "progressive_carries": 0.917,
                "shots_off_target": 0.8924
              },
              "params": {
                "blend_weight": 0.0086,
                "history_matches": 38,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.7443,
                "prior_reliability": 0.1133,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.7874,
                  "after": 0.7807
                },
                {
                  "stat": "wasFouled",
                  "before": 1.0956,
                  "after": 1.09
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1543,
                "goals": 0.1785,
                "goal_rate": 0.1785,
                "shots_on_target": 0.538,
                "total_shots": 1.4304,
                "expected_assists": 0.0797,
                "key_pass": 0.8378,
                "rating": 6.7839,
                "minutes": 66.99,
                "total_pass": 28.5855,
                "accurate_pass": 22.3188,
                "duels_won": 2.5929,
                "total_long_balls": 2.6965,
                "accurate_long_balls": 1.394,
                "total_opp_half_passes": 20.2798,
                "accurate_opp_half_passes": 15.1228,
                "crosses_total": 0.7807,
                "crosses_accurate": 0.1183,
                "touches": 37.228,
                "possession_lost": 9.3955,
                "dispossessed": 0.6841,
                "duels_lost": 3.1675,
                "aerial_lost": 0.5094,
                "total_contest": 1.0277,
                "won_contest": 0.5269,
                "ball_recovery": 2.0495,
                "challenges_lost": 1.1385,
                "fouls": 0.3319,
                "fouls_drawn": 1.09,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3668,
                "tackles_won": 0.5152,
                "tackles": 0.682,
                "clearances": 0.0755,
                "blocks": 0.0,
                "big_chances_created": 0.3156,
                "big_chances_missed": 0.0242,
                "xgot": 0.2097,
                "offsides": 0.0037,
                "ball_carries": 9.3939,
                "total_progression": 22.9633,
                "progressive_carries": 0.917,
                "shots_off_target": 0.8924
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "expected_goals": 0.145,
                "goals": 0.1677,
                "goal_rate": 0.1677,
                "shots_on_target": 0.5055,
                "total_shots": 1.3439,
                "expected_assists": 0.0797,
                "key_pass": 0.8378,
                "rating": 6.7839,
                "minutes": 66.99,
                "total_pass": 28.5855,
                "accurate_pass": 22.3188,
                "duels_won": 2.5929,
                "total_long_balls": 2.6965,
                "accurate_long_balls": 1.394,
                "total_opp_half_passes": 20.2798,
                "accurate_opp_half_passes": 15.1228,
                "crosses_total": 0.7807,
                "crosses_accurate": 0.1183,
                "touches": 37.228,
                "possession_lost": 9.3955,
                "dispossessed": 0.6841,
                "duels_lost": 3.1675,
                "aerial_lost": 0.5094,
                "total_contest": 1.0277,
                "won_contest": 0.5269,
                "ball_recovery": 2.0495,
                "challenges_lost": 1.1385,
                "fouls": 0.3319,
                "fouls_drawn": 1.09,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3668,
                "tackles_won": 0.5152,
                "tackles": 0.682,
                "clearances": 0.0755,
                "blocks": 0.0,
                "big_chances_created": 0.3156,
                "big_chances_missed": 0.0227,
                "xgot": 0.197,
                "offsides": 0.0037,
                "ball_carries": 9.3939,
                "total_progression": 22.9633,
                "progressive_carries": 0.917,
                "shots_off_target": 0.8384,
                "duel_xg_multiplier": 0.9395,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Ville Koski, Nahuel Tenaglia",
                "opponent_faced": "Ville Koski, Nahuel Tenaglia",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ville Koski, Nahuel Tenaglia",
                  "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.9395,
                  "skill_edge": -0.0111,
                  "height_edge": -0.03,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.4622,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Ville Koski",
                      "market_value": 4300000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4712
                    },
                    {
                      "player": "Nahuel Tenaglia",
                      "market_value": 3200000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4531
                    }
                  ],
                  "xg_override": 0.145
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.4304,
                  "after": 1.3439
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.8924,
                  "after": 0.8384
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.538,
                  "after": 0.5055
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.2097,
                  "after": 0.197
                },
                {
                  "stat": "goals",
                  "before": 0.1785,
                  "after": 0.1677
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1543,
                  "after": 0.145
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.145,
                "goal_rate": 0.1677,
                "goals": 0,
                "shots_on_target": 0.5055,
                "total_shots": 1.3439,
                "expected_assists": 0.0797,
                "key_pass": 0.8378,
                "rating": 6.7839,
                "minutes": 66.99,
                "total_pass": 28.5855,
                "accurate_pass": 22.3188,
                "duels_won": 2.5929,
                "total_long_balls": 2.6965,
                "accurate_long_balls": 1.394,
                "total_opp_half_passes": 20.2798,
                "accurate_opp_half_passes": 15.1228,
                "crosses_total": 0.7807,
                "crosses_accurate": 0.1183,
                "touches": 37.228,
                "possession_lost": 9.3955,
                "dispossessed": 0.6841,
                "duels_lost": 3.1675,
                "aerial_lost": 0.5094,
                "total_contest": 1.0277,
                "won_contest": 0.5269,
                "ball_recovery": 2.0495,
                "challenges_lost": 1.1385,
                "fouls": 0.3319,
                "fouls_drawn": 1.09,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3668,
                "tackles_won": 0.5152,
                "tackles": 0.682,
                "clearances": 0.0755,
                "blocks": 0.0,
                "big_chances_created": 0.3156,
                "big_chances_missed": 0.0227,
                "xgot": 0.197,
                "offsides": 0.0037,
                "ball_carries": 9.3939,
                "total_progression": 22.9633,
                "progressive_carries": 0.917,
                "shots_off_target": 0.8384,
                "duel_xg_multiplier": 0.9395,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Ville Koski, Nahuel Tenaglia",
                "opponent_faced": "Ville Koski, Nahuel Tenaglia",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.1625,
                "goal_rate": 0.1677,
                "goals": 0,
                "shots_on_target": 0.5055,
                "total_shots": 1.3439,
                "expected_assists": 0.0893,
                "key_pass": 0.8378,
                "rating": 6.7839,
                "minutes": 66.99,
                "total_pass": 28.5855,
                "accurate_pass": 22.3188,
                "duels_won": 2.5929,
                "total_long_balls": 2.6965,
                "accurate_long_balls": 1.394,
                "total_opp_half_passes": 20.2798,
                "accurate_opp_half_passes": 15.1228,
                "crosses_total": 0.7807,
                "crosses_accurate": 0.1183,
                "touches": 37.228,
                "possession_lost": 9.3955,
                "dispossessed": 0.6841,
                "duels_lost": 3.1675,
                "aerial_lost": 0.5094,
                "total_contest": 1.0277,
                "won_contest": 0.5269,
                "ball_recovery": 2.0495,
                "challenges_lost": 1.1385,
                "fouls": 0.3319,
                "fouls_drawn": 1.09,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3668,
                "tackles_won": 0.5152,
                "tackles": 0.682,
                "clearances": 0.0755,
                "blocks": 0.0,
                "big_chances_created": 0.3156,
                "big_chances_missed": 0.0227,
                "xgot": 0.2208,
                "offsides": 0.0037,
                "ball_carries": 9.3939,
                "total_progression": 22.9633,
                "progressive_carries": 0.917,
                "shots_off_target": 0.8384,
                "duel_xg_multiplier": 0.9395,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Ville Koski, Nahuel Tenaglia",
                "opponent_faced": "Ville Koski, Nahuel Tenaglia",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1164,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.145,
                  "after": 0.1625
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0797,
                  "after": 0.0893
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 81.0)",
              "stats": {
                "expected_goals": 0.1625,
                "goal_rate": 0.1677,
                "goals": 0,
                "shots_on_target": 0.5055,
                "total_shots": 1.3439,
                "expected_assists": 0.0893,
                "key_pass": 0.8378,
                "rating": 6.7839,
                "minutes": 66.99,
                "total_pass": 28.5855,
                "accurate_pass": 22.3188,
                "duels_won": 2.5929,
                "total_long_balls": 2.6965,
                "accurate_long_balls": 1.394,
                "total_opp_half_passes": 20.2798,
                "accurate_opp_half_passes": 15.1228,
                "crosses_total": 0.7807,
                "crosses_accurate": 0.1183,
                "touches": 37.228,
                "possession_lost": 9.3955,
                "dispossessed": 0.6841,
                "duels_lost": 3.1675,
                "aerial_lost": 0.5094,
                "total_contest": 1.0277,
                "won_contest": 0.5269,
                "ball_recovery": 2.0495,
                "challenges_lost": 1.1385,
                "fouls": 0.3319,
                "fouls_drawn": 1.09,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3668,
                "tackles_won": 0.5152,
                "tackles": 0.682,
                "clearances": 0.0755,
                "blocks": 0.0,
                "big_chances_created": 0.3156,
                "big_chances_missed": 0.0227,
                "xgot": 0.2208,
                "offsides": 0.0037,
                "ball_carries": 9.3939,
                "total_progression": 22.9633,
                "progressive_carries": 0.917,
                "shots_off_target": 0.8384,
                "duel_xg_multiplier": 0.9395,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Ville Koski, Nahuel Tenaglia",
                "opponent_faced": "Ville Koski, Nahuel Tenaglia",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1164,
                "creation_factor": 0.8,
                "fifa_overall": 81.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": 1065,
                "fifa_rank": 568.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.1625,
                "goal_rate": 0.1677,
                "goals": 0,
                "shots_on_target": 0.5055,
                "total_shots": 1.3439,
                "expected_assists": 0.0893,
                "key_pass": 0.8378,
                "rating": 6.7839,
                "minutes": 66.99,
                "total_pass": 28.5855,
                "accurate_pass": 22.3188,
                "duels_won": 2.5929,
                "total_long_balls": 2.6965,
                "accurate_long_balls": 1.394,
                "total_opp_half_passes": 20.2798,
                "accurate_opp_half_passes": 15.1228,
                "crosses_total": 0.7807,
                "crosses_accurate": 0.1183,
                "touches": 37.228,
                "possession_lost": 9.3955,
                "dispossessed": 0.6841,
                "duels_lost": 3.1675,
                "aerial_lost": 0.5094,
                "total_contest": 1.0277,
                "won_contest": 0.5269,
                "ball_recovery": 2.0495,
                "challenges_lost": 1.1385,
                "fouls": 0.3319,
                "fouls_drawn": 1.09,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3668,
                "tackles_won": 0.5152,
                "tackles": 0.682,
                "clearances": 0.0755,
                "blocks": 0.0,
                "big_chances_created": 0.3156,
                "big_chances_missed": 0.0227,
                "xgot": 0.2208,
                "offsides": 0.0037,
                "ball_carries": 9.3939,
                "total_progression": 22.9633,
                "progressive_carries": 0.917,
                "shots_off_target": 0.8384,
                "duel_xg_multiplier": 0.9395,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Ville Koski, Nahuel Tenaglia",
                "opponent_faced": "Ville Koski, Nahuel Tenaglia",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.15,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1164,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.15,
                "goal_rate": 0.1677,
                "scorer_weight": 0.1814,
                "squad_weight_total": 0.9142,
                "weight_share": 0.1984,
                "finishing_factor": 1.1164,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1625,
                "goal_rate": 0.1677,
                "goals": 0,
                "shots_on_target": 0.5055,
                "total_shots": 1.3439,
                "expected_assists": 0.0893,
                "key_pass": 0.8378,
                "rating": 6.7839,
                "minutes": 66.99,
                "total_pass": 28.5855,
                "accurate_pass": 22.3188,
                "duels_won": 2.5929,
                "total_long_balls": 2.6965,
                "accurate_long_balls": 1.394,
                "total_opp_half_passes": 20.2798,
                "accurate_opp_half_passes": 15.1228,
                "crosses_total": 0.7807,
                "crosses_accurate": 0.1183,
                "touches": 37.228,
                "possession_lost": 9.3955,
                "dispossessed": 0.6841,
                "duels_lost": 3.1675,
                "aerial_lost": 0.5094,
                "total_contest": 1.0277,
                "won_contest": 0.5269,
                "ball_recovery": 2.0495,
                "challenges_lost": 1.1385,
                "fouls": 0.3319,
                "fouls_drawn": 1.09,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3668,
                "tackles_won": 0.5152,
                "tackles": 0.682,
                "clearances": 0.0755,
                "blocks": 0.0,
                "big_chances_created": 0.3156,
                "big_chances_missed": 0.0227,
                "xgot": 0.2208,
                "offsides": 0.0037,
                "ball_carries": 9.3939,
                "total_progression": 22.9633,
                "progressive_carries": 0.917,
                "shots_off_target": 0.8384,
                "duel_xg_multiplier": 0.9395,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Ville Koski, Nahuel Tenaglia",
                "opponent_faced": "Ville Koski, Nahuel Tenaglia",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.15,
                "projected_assists": 0,
                "assist_probability": 0.0854,
                "finishing_factor": 1.1164,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0854,
                "assist_rate": 0.0,
                "provider_weight": 0.0714,
                "squad_weight_total": 0.6035,
                "weight_share": 0.1184,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12
              }
            }
          ]
        },
        "Ferrán Jutglà": {
          "player_id": 949962,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 175,
          "market_value": 10700000,
          "stats": {
            "expected_goals": 0.2113,
            "goal_rate": 0.2025,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0602,
            "key_pass": 1,
            "rating": 6.7205,
            "minutes": 73,
            "total_pass": 15,
            "accurate_pass": 11,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 7,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 29,
            "possession_lost": 9.6674,
            "dispossessed": 0.8925,
            "duels_lost": 5,
            "aerial_lost": 2,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "assist_rate": 0.0728,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.3292,
            "offsides": 1,
            "ball_carries": 8,
            "total_progression": 13,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9805,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.2,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.437,
            "pressing_faced": "LOW",
            "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
            "numerical_situation": "1v1",
            "opponent_defenders": "Ville Koski",
            "opponent_faced": "Ville Koski",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1905,
            "projected_assists": 0,
            "assist_probability": 0.0584,
            "finishing_factor": 1.0591,
            "creation_factor": 1.1842,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16421058,
              "match_date": "2026-10-11",
              "home_team": "Elche",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 71,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0609,
                "expected_assists": 0.0084,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 15,
                "accurate_pass": 9,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 63,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0624,
                "expected_assists": 0.0032,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 6,
                "clearances": 1,
                "aerial_won": 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": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 84,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.468,
                "expected_assists": 0.0139,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 15,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416348,
              "match_date": "2026-09-07",
              "home_team": "Getafe",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Getafe",
              "stats": {
                "minutes": 13,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0168,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "tackles": 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": 16416340,
              "match_date": "2026-09-03",
              "home_team": "Real Sociedad",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 69,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0939,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 9,
                "key_pass": 1,
                "aerial_won": 2,
                "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": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0268,
                "expected_assists": 0.0949,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 2,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 11,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0053,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 64,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "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": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 24,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0496,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 11,
                "key_pass": 2,
                "tackles": 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": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 59,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 7,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3438,
            "combined_rank_score": 1429.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 444.0,
            "sofascore_rating": 6.9033,
            "sofascore_appearances": 30.0,
            "fifa_rank": 2414.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7205,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ferran Jutglà",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Carlos Rodríguez",
                  "ranking": 3433
                },
                {
                  "player_name": "Ryan Manning",
                  "ranking": 3434
                },
                {
                  "player_name": "Sebastiaan Bornauw",
                  "ranking": 3435
                },
                {
                  "player_name": "Lorenzo Melgarejo",
                  "ranking": 3436
                },
                {
                  "player_name": "Tomáš Chorý",
                  "ranking": 3437
                }
              ],
              "lower": [
                {
                  "player_name": "César Tárrega",
                  "ranking": 3439
                },
                {
                  "player_name": "Lucas Stassin",
                  "ranking": 3440
                },
                {
                  "player_name": "Nelson Deossa",
                  "ranking": 3441
                },
                {
                  "player_name": "Filip Jörgensen",
                  "ranking": 3442
                },
                {
                  "player_name": "Luis Muriel",
                  "ranking": 3443
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.776,
          "history_matches": 38,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 38,
            "data_confidence": 0.776,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0009,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 4.0,
              "starts": 3.0,
              "minutes": 233.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.39,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1733
            },
            "rationale": "XGBoost regressor (F_service) evaluated 38 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Celta Vigo, rel: 0.17, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1919,
                "goals": 0.209,
                "goal_rate": 0.209,
                "shots_on_target": 0.6072,
                "total_shots": 1.5666,
                "expected_assists": 0.0536,
                "key_pass": 0.663,
                "rating": 6.7205,
                "minutes": 72.83,
                "total_pass": 14.9033,
                "accurate_pass": 11.0469,
                "duels_won": 3.3575,
                "total_long_balls": 1.1038,
                "accurate_long_balls": 0.3884,
                "total_opp_half_passes": 10.1739,
                "accurate_opp_half_passes": 7.05,
                "crosses_total": 0.5851,
                "crosses_accurate": 0.1616,
                "touches": 28.6889,
                "possession_lost": 9.6587,
                "dispossessed": 0.8917,
                "duels_lost": 5.413,
                "aerial_lost": 1.7628,
                "total_contest": 1.9373,
                "won_contest": 0.6415,
                "ball_recovery": 2.2374,
                "challenges_lost": 0.2866,
                "fouls": 1.2598,
                "fouls_drawn": 1.5487,
                "assists": 0.0737,
                "assist_rate": 0.0737,
                "interceptions": 0.2559,
                "tackles_won": 0.2329,
                "tackles": 0.4321,
                "clearances": 0.5875,
                "blocks": 0.0862,
                "big_chances_created": 0.109,
                "big_chances_missed": 0.1196,
                "xgot": 0.2993,
                "offsides": 0.5428,
                "ball_carries": 8.2715,
                "total_progression": 12.7549,
                "progressive_carries": 1.5515,
                "shots_off_target": 0.9593
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Elche",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Real Racing Club",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-09-07",
                    "opponent": "Getafe",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0923,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-03",
                    "opponent": "Real Sociedad",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 8.583,
                  "expectedGoals": 0.1339,
                  "accurateOppositionHalfPasses": 5.9819,
                  "accuratePass": 9.2173,
                  "totalShots": 1.2449
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.19190989434719086,
                    "model_output": 0.1919,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0633
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0426
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0124
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0104
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0075
                        }
                      ],
                      "others": 0.004,
                      "total": 0.1919,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.278091
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.178401
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.058585
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.05194
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.039094
                        }
                      ],
                      "others_margin": 0.021117
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.20898279547691345,
                    "model_output": 0.209,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0662
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0448
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0147
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0133
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0096
                        }
                      ],
                      "others": -0.0048,
                      "total": 0.209,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.281689
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.181896
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.0675
                        },
                        {
                          "name": "goals",
                          "margin": 0.061184
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.043792
                        }
                      ],
                      "others_margin": -0.0224
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.6072174906730652,
                    "model_output": 0.6072,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1752
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0327
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0285
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0242
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0213
                        }
                      ],
                      "others": 0.0011,
                      "total": 0.6072,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.282125
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.046935
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.042812
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.037765
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.034575
                        }
                      ],
                      "others_margin": 0.001642
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.5665652751922607,
                    "model_output": 1.5666,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.461
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1514
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0584
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0445
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0325
                        }
                      ],
                      "others": 0.0186,
                      "total": 1.5666,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.460952
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.151445
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.058422
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.044474
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.032507
                        }
                      ],
                      "others_margin": 0.018621
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.053624752908945084,
                    "model_output": 0.0536,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0158
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0092
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.006
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0025
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0021
                        }
                      ],
                      "others": -0.0108,
                      "total": 0.0536,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.219974
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.121684
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.088245
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.039822
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.033707
                        }
                      ],
                      "others_margin": -0.184164
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.6630275249481201,
                    "model_output": 0.663,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1863
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0595
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0531
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0356
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0322
                        }
                      ],
                      "others": -0.0163,
                      "total": 0.663,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.244262
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.07168
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.06862
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.048831
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.046261
                        }
                      ],
                      "others_margin": -0.024348
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.720483779907227,
                    "model_output": 6.7205,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0492
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0175
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0136
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0131
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0112
                        }
                      ],
                      "others": -0.0665,
                      "total": 6.7205,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.049173
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.017538
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.013607
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.013117
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.011213
                        }
                      ],
                      "others_margin": -0.06645
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 38,
                  "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.0009, quality 0.531)",
              "stats": {
                "expected_goals": 0.1921,
                "goals": 0.2092,
                "goal_rate": 0.2092,
                "shots_on_target": 0.6078,
                "total_shots": 1.568,
                "expected_assists": 0.0537,
                "key_pass": 0.6636,
                "rating": 6.7205,
                "minutes": 72.83,
                "total_pass": 14.9167,
                "accurate_pass": 11.0568,
                "duels_won": 3.3605,
                "total_long_balls": 1.1048,
                "accurate_long_balls": 0.3887,
                "total_opp_half_passes": 10.1831,
                "accurate_opp_half_passes": 7.0563,
                "crosses_total": 0.5856,
                "crosses_accurate": 0.1617,
                "touches": 28.7147,
                "possession_lost": 9.6674,
                "dispossessed": 0.8925,
                "duels_lost": 5.4179,
                "aerial_lost": 1.7644,
                "total_contest": 1.939,
                "won_contest": 0.6421,
                "ball_recovery": 2.2394,
                "challenges_lost": 0.2869,
                "fouls": 1.2609,
                "fouls_drawn": 1.5501,
                "assists": 0.0738,
                "assist_rate": 0.0738,
                "interceptions": 0.2561,
                "tackles_won": 0.2331,
                "tackles": 0.4325,
                "clearances": 0.588,
                "blocks": 0.0863,
                "big_chances_created": 0.1091,
                "big_chances_missed": 0.1197,
                "xgot": 0.2996,
                "offsides": 0.5433,
                "ball_carries": 8.2789,
                "total_progression": 12.7664,
                "progressive_carries": 1.5529,
                "shots_off_target": 0.9602
              },
              "params": {
                "market_value_eur": 10700000,
                "quality_factor": 0.5306,
                "boost_factor": 1.0009,
                "reference_quality": 0.505,
                "history_matches": 38,
                "history_shrink": 0.1163,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0131)",
              "stats": {
                "expected_goals": 0.1921,
                "goals": 0.2065,
                "goal_rate": 0.2065,
                "shots_on_target": 0.5998,
                "total_shots": 1.5516,
                "expected_assists": 0.0537,
                "key_pass": 0.6636,
                "rating": 6.7205,
                "minutes": 72.83,
                "total_pass": 14.9167,
                "accurate_pass": 11.0568,
                "duels_won": 3.3605,
                "total_long_balls": 1.1048,
                "accurate_long_balls": 0.3887,
                "total_opp_half_passes": 10.1831,
                "accurate_opp_half_passes": 7.0563,
                "crosses_total": 0.5861,
                "crosses_accurate": 0.1617,
                "touches": 28.7147,
                "possession_lost": 9.6674,
                "dispossessed": 0.8925,
                "duels_lost": 5.4179,
                "aerial_lost": 1.7644,
                "total_contest": 1.939,
                "won_contest": 0.6421,
                "ball_recovery": 2.2394,
                "challenges_lost": 0.2869,
                "fouls": 1.2566,
                "fouls_drawn": 1.5583,
                "assists": 0.0728,
                "assist_rate": 0.0728,
                "interceptions": 0.2527,
                "tackles_won": 0.23,
                "tackles": 0.4325,
                "clearances": 0.588,
                "blocks": 0.0863,
                "big_chances_created": 0.1091,
                "big_chances_missed": 0.1197,
                "xgot": 0.2996,
                "offsides": 0.5362,
                "ball_carries": 8.2789,
                "total_progression": 12.7664,
                "progressive_carries": 1.5529,
                "shots_off_target": 0.9602
              },
              "params": {
                "blend_weight": 0.0131,
                "history_matches": 38,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8092,
                "prior_reliability": 0.1733,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.568,
                  "after": 1.5516
                },
                {
                  "stat": "wasFouled",
                  "before": 1.5501,
                  "after": 1.5583
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6078,
                  "after": 0.5998
                },
                {
                  "stat": "totalOffside",
                  "before": 0.5433,
                  "after": 0.5362
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1921,
                "goals": 0.2065,
                "goal_rate": 0.2065,
                "shots_on_target": 0.5998,
                "total_shots": 1.56,
                "expected_assists": 0.0537,
                "key_pass": 0.6636,
                "rating": 6.7205,
                "minutes": 72.83,
                "total_pass": 14.9167,
                "accurate_pass": 11.0568,
                "duels_won": 3.3605,
                "total_long_balls": 1.1048,
                "accurate_long_balls": 0.3887,
                "total_opp_half_passes": 10.1831,
                "accurate_opp_half_passes": 7.0563,
                "crosses_total": 0.5861,
                "crosses_accurate": 0.1617,
                "touches": 28.7147,
                "possession_lost": 9.6674,
                "dispossessed": 0.8925,
                "duels_lost": 5.4179,
                "aerial_lost": 1.7644,
                "total_contest": 1.939,
                "won_contest": 0.6421,
                "ball_recovery": 2.2394,
                "challenges_lost": 0.2869,
                "fouls": 1.2566,
                "fouls_drawn": 1.5583,
                "assists": 0.0728,
                "assist_rate": 0.0728,
                "interceptions": 0.2527,
                "tackles_won": 0.23,
                "tackles": 0.4325,
                "clearances": 0.588,
                "blocks": 0.0863,
                "big_chances_created": 0.1091,
                "big_chances_missed": 0.1197,
                "xgot": 0.2996,
                "offsides": 0.5362,
                "ball_carries": 8.2789,
                "total_progression": 12.7664,
                "progressive_carries": 1.5529,
                "shots_off_target": 0.9602
              },
              "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.1884,
                "goals": 0.2025,
                "goal_rate": 0.2025,
                "shots_on_target": 0.5881,
                "total_shots": 1.5296,
                "expected_assists": 0.0537,
                "key_pass": 0.6636,
                "rating": 6.7205,
                "minutes": 72.83,
                "total_pass": 14.9167,
                "accurate_pass": 11.0568,
                "duels_won": 3.3605,
                "total_long_balls": 1.1048,
                "accurate_long_balls": 0.3887,
                "total_opp_half_passes": 10.1831,
                "accurate_opp_half_passes": 7.0563,
                "crosses_total": 0.5861,
                "crosses_accurate": 0.1617,
                "touches": 28.7147,
                "possession_lost": 9.6674,
                "dispossessed": 0.8925,
                "duels_lost": 5.4179,
                "aerial_lost": 1.7644,
                "total_contest": 1.939,
                "won_contest": 0.6421,
                "ball_recovery": 2.2394,
                "challenges_lost": 0.2869,
                "fouls": 1.2566,
                "fouls_drawn": 1.5583,
                "assists": 0.0728,
                "assist_rate": 0.0728,
                "interceptions": 0.2527,
                "tackles_won": 0.23,
                "tackles": 0.4325,
                "clearances": 0.588,
                "blocks": 0.0863,
                "big_chances_created": 0.1091,
                "big_chances_missed": 0.1174,
                "xgot": 0.2938,
                "offsides": 0.5362,
                "ball_carries": 8.2789,
                "total_progression": 12.7664,
                "progressive_carries": 1.5529,
                "shots_off_target": 0.9415,
                "duel_xg_multiplier": 0.9805,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ville Koski",
                  "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                  "duel_win_rate": 0.437,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9805,
                  "skill_edge": 0.0268,
                  "height_edge": -0.04,
                  "attacker_skill": 0.5306,
                  "defender_skill": 0.4712,
                  "attacker_role": "SS",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Ville Koski",
                      "market_value": 4300000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4712
                    }
                  ],
                  "xg_override": 0.1884
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.56,
                  "after": 1.5296
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9602,
                  "after": 0.9415
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5998,
                  "after": 0.5881
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.2996,
                  "after": 0.2938
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1884,
                "goal_rate": 0.2025,
                "goals": 0,
                "shots_on_target": 0.5881,
                "total_shots": 1.5296,
                "expected_assists": 0.0537,
                "key_pass": 0.6636,
                "rating": 6.7205,
                "minutes": 72.83,
                "total_pass": 14.9167,
                "accurate_pass": 11.0568,
                "duels_won": 3.3605,
                "total_long_balls": 1.1048,
                "accurate_long_balls": 0.3887,
                "total_opp_half_passes": 10.1831,
                "accurate_opp_half_passes": 7.0563,
                "crosses_total": 0.5861,
                "crosses_accurate": 0.1617,
                "touches": 28.7147,
                "possession_lost": 9.6674,
                "dispossessed": 0.8925,
                "duels_lost": 5.4179,
                "aerial_lost": 1.7644,
                "total_contest": 1.939,
                "won_contest": 0.6421,
                "ball_recovery": 2.2394,
                "challenges_lost": 0.2869,
                "fouls": 1.2566,
                "fouls_drawn": 1.5583,
                "assist_rate": 0.0728,
                "assists": 0,
                "interceptions": 0.2527,
                "tackles_won": 0.23,
                "tackles": 0.4325,
                "clearances": 0.588,
                "blocks": 0.0863,
                "big_chances_created": 0.1091,
                "big_chances_missed": 0.1174,
                "xgot": 0.2938,
                "offsides": 0.5362,
                "ball_carries": 8.2789,
                "total_progression": 12.7664,
                "progressive_carries": 1.5529,
                "shots_off_target": 0.9415,
                "duel_xg_multiplier": 0.9805,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.2113,
                "goal_rate": 0.2025,
                "goals": 0,
                "shots_on_target": 0.5881,
                "total_shots": 1.5296,
                "expected_assists": 0.0602,
                "key_pass": 0.6636,
                "rating": 6.7205,
                "minutes": 72.83,
                "total_pass": 14.9167,
                "accurate_pass": 11.0568,
                "duels_won": 3.3605,
                "total_long_balls": 1.1048,
                "accurate_long_balls": 0.3887,
                "total_opp_half_passes": 10.1831,
                "accurate_opp_half_passes": 7.0563,
                "crosses_total": 0.5861,
                "crosses_accurate": 0.1617,
                "touches": 28.7147,
                "possession_lost": 9.6674,
                "dispossessed": 0.8925,
                "duels_lost": 5.4179,
                "aerial_lost": 1.7644,
                "total_contest": 1.939,
                "won_contest": 0.6421,
                "ball_recovery": 2.2394,
                "challenges_lost": 0.2869,
                "fouls": 1.2566,
                "fouls_drawn": 1.5583,
                "assist_rate": 0.0728,
                "assists": 0,
                "interceptions": 0.2527,
                "tackles_won": 0.23,
                "tackles": 0.4325,
                "clearances": 0.588,
                "blocks": 0.0863,
                "big_chances_created": 0.1091,
                "big_chances_missed": 0.1174,
                "xgot": 0.3292,
                "offsides": 0.5362,
                "ball_carries": 8.2789,
                "total_progression": 12.7664,
                "progressive_carries": 1.5529,
                "shots_off_target": 0.9415,
                "duel_xg_multiplier": 0.9805,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0591,
                "creation_factor": 1.1842
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1884,
                  "after": 0.2113
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0537,
                  "after": 0.0602
                }
              ]
            },
            {
              "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.2113,
                "goal_rate": 0.2025,
                "goals": 0,
                "shots_on_target": 0.5881,
                "total_shots": 1.5296,
                "expected_assists": 0.0602,
                "key_pass": 0.6636,
                "rating": 6.7205,
                "minutes": 72.83,
                "total_pass": 14.9167,
                "accurate_pass": 11.0568,
                "duels_won": 3.3605,
                "total_long_balls": 1.1048,
                "accurate_long_balls": 0.3887,
                "total_opp_half_passes": 10.1831,
                "accurate_opp_half_passes": 7.0563,
                "crosses_total": 0.5861,
                "crosses_accurate": 0.1617,
                "touches": 28.7147,
                "possession_lost": 9.6674,
                "dispossessed": 0.8925,
                "duels_lost": 5.4179,
                "aerial_lost": 1.7644,
                "total_contest": 1.939,
                "won_contest": 0.6421,
                "ball_recovery": 2.2394,
                "challenges_lost": 0.2869,
                "fouls": 1.2566,
                "fouls_drawn": 1.5583,
                "assist_rate": 0.0728,
                "assists": 0,
                "interceptions": 0.2527,
                "tackles_won": 0.23,
                "tackles": 0.4325,
                "clearances": 0.588,
                "blocks": 0.0863,
                "big_chances_created": 0.1091,
                "big_chances_missed": 0.1174,
                "xgot": 0.3292,
                "offsides": 0.5362,
                "ball_carries": 8.2789,
                "total_progression": 12.7664,
                "progressive_carries": 1.5529,
                "shots_off_target": 0.9415,
                "duel_xg_multiplier": 0.9805,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0591,
                "creation_factor": 1.1842,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3438,
                "fifa_rank": 2414.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.2113,
                "goal_rate": 0.2025,
                "goals": 0,
                "shots_on_target": 0.5881,
                "total_shots": 1.5296,
                "expected_assists": 0.0602,
                "key_pass": 0.6636,
                "rating": 6.7205,
                "minutes": 72.83,
                "total_pass": 14.9167,
                "accurate_pass": 11.0568,
                "duels_won": 3.3605,
                "total_long_balls": 1.1048,
                "accurate_long_balls": 0.3887,
                "total_opp_half_passes": 10.1831,
                "accurate_opp_half_passes": 7.0563,
                "crosses_total": 0.5861,
                "crosses_accurate": 0.1617,
                "touches": 28.7147,
                "possession_lost": 9.6674,
                "dispossessed": 0.8925,
                "duels_lost": 5.4179,
                "aerial_lost": 1.7644,
                "total_contest": 1.939,
                "won_contest": 0.6421,
                "ball_recovery": 2.2394,
                "challenges_lost": 0.2869,
                "fouls": 1.2566,
                "fouls_drawn": 1.5583,
                "assist_rate": 0.0728,
                "assists": 0,
                "interceptions": 0.2527,
                "tackles_won": 0.23,
                "tackles": 0.4325,
                "clearances": 0.588,
                "blocks": 0.0863,
                "big_chances_created": 0.1091,
                "big_chances_missed": 0.1174,
                "xgot": 0.3292,
                "offsides": 0.5362,
                "ball_carries": 8.2789,
                "total_progression": 12.7664,
                "progressive_carries": 1.5529,
                "shots_off_target": 0.9415,
                "duel_xg_multiplier": 0.9805,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1905,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0591,
                "creation_factor": 1.1842,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.1905,
                "goal_rate": 0.2025,
                "scorer_weight": 0.2238,
                "squad_weight_total": 0.9142,
                "weight_share": 0.2448,
                "finishing_factor": 1.0591,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.2113,
                "goal_rate": 0.2025,
                "goals": 0,
                "shots_on_target": 0.5881,
                "total_shots": 1.5296,
                "expected_assists": 0.0602,
                "key_pass": 0.6636,
                "rating": 6.7205,
                "minutes": 72.83,
                "total_pass": 14.9167,
                "accurate_pass": 11.0568,
                "duels_won": 3.3605,
                "total_long_balls": 1.1048,
                "accurate_long_balls": 0.3887,
                "total_opp_half_passes": 10.1831,
                "accurate_opp_half_passes": 7.0563,
                "crosses_total": 0.5861,
                "crosses_accurate": 0.1617,
                "touches": 28.7147,
                "possession_lost": 9.6674,
                "dispossessed": 0.8925,
                "duels_lost": 5.4179,
                "aerial_lost": 1.7644,
                "total_contest": 1.939,
                "won_contest": 0.6421,
                "ball_recovery": 2.2394,
                "challenges_lost": 0.2869,
                "fouls": 1.2566,
                "fouls_drawn": 1.5583,
                "assist_rate": 0.0728,
                "assists": 0,
                "interceptions": 0.2527,
                "tackles_won": 0.23,
                "tackles": 0.4325,
                "clearances": 0.588,
                "blocks": 0.0863,
                "big_chances_created": 0.1091,
                "big_chances_missed": 0.1174,
                "xgot": 0.3292,
                "offsides": 0.5362,
                "ball_carries": 8.2789,
                "total_progression": 12.7664,
                "progressive_carries": 1.5529,
                "shots_off_target": 0.9415,
                "duel_xg_multiplier": 0.9805,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "aerial_won": 0.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1905,
                "projected_assists": 0,
                "assist_probability": 0.0584,
                "finishing_factor": 1.0591,
                "creation_factor": 1.1842,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0584,
                "assist_rate": 0.0728,
                "provider_weight": 0.0713,
                "squad_weight_total": 0.6035,
                "weight_share": 0.1181,
                "creation_factor": 1.1842,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12
              }
            }
          ]
        },
        "Javi Galán": {
          "player_id": 825133,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 22,
          "height": 172,
          "market_value": 1700000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7989,
            "minutes": 77,
            "total_pass": 35,
            "accurate_pass": 29,
            "duels_won": 5,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 18,
            "accurate_own_half_passes": 15,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 14,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 59,
            "possession_lost": 12.3888,
            "dispossessed": 0.2651,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0058,
            "assists": 0,
            "expected_goals": 0.0056,
            "expected_assists": 0.0764,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0008,
            "ball_carries": 16,
            "total_progression": 76,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 0,
            "opponent_faced": "Toni Martínez",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0056,
            "projected_assists": 0,
            "assist_probability": 0.0736,
            "finishing_factor": 0.9091,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421058,
              "match_date": "2026-10-11",
              "home_team": "Elche",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 71,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0045,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 24,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 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": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 26,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0291,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 1,
                "tackles_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": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0063,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 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": 16416348,
              "match_date": "2026-09-07",
              "home_team": "Getafe",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Getafe",
              "stats": {
                "minutes": 64,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1348,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 18,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 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": 16416340,
              "match_date": "2026-09-03",
              "home_team": "Real Sociedad",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 12,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0023,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "tackles": 1,
                "tackles_won": 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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 65,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 29,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 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"
            },
            {
              "match_id": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 64,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0089,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 22,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 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": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0232,
                "expected_assists": 0.0776,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 14,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "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": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 23,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0804,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 21,
                "key_pass": 3,
                "tackles": 1,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083634,
              "match_date": "2026-05-12",
              "home_team": "Osasuna",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 60,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1573,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 29,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3078,
            "combined_rank_score": 1045.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 536.0,
            "sofascore_rating": 6.828,
            "sofascore_appearances": 25.0,
            "fifa_rank": 1554.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7989,
            "source_file": "data/player_rankings.csv",
            "player_name": "Javi Galán",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alex Arce",
                  "ranking": 3073
                },
                {
                  "player_name": "Matías Dituro",
                  "ranking": 3074
                },
                {
                  "player_name": "Liam Delap",
                  "ranking": 3075
                },
                {
                  "player_name": "Leopold Querfeld",
                  "ranking": 3076
                },
                {
                  "player_name": "Daizen Maeda",
                  "ranking": 3077
                }
              ],
              "lower": [
                {
                  "player_name": "Matt O'Riley",
                  "ranking": 3079
                },
                {
                  "player_name": "Joshua King",
                  "ranking": 3080
                },
                {
                  "player_name": "Aitor Ruibal",
                  "ranking": 3081
                },
                {
                  "player_name": "Artem Bondarenko",
                  "ranking": 3082
                },
                {
                  "player_name": "Igor Jesus",
                  "ranking": 3083
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.765,
          "history_matches": 32,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 32,
            "data_confidence": 0.765,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9973,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "minutes": 134.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1
            },
            "rationale": "XGBoost regressor (D_service) evaluated 32 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Celta Vigo, rel: 0.10, 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.8424,
                "tackles": 1.6833,
                "tackles_won": 1.0502,
                "clearances": 1.9427,
                "aerial_won": 0.5906,
                "total_shots": 0.3869,
                "rating": 6.7989,
                "minutes": 77.11,
                "total_pass": 34.9089,
                "accurate_pass": 28.9334,
                "duels_won": 4.9131,
                "total_long_balls": 4.202,
                "accurate_long_balls": 1.9214,
                "total_own_half_passes": 17.5954,
                "accurate_own_half_passes": 15.2334,
                "total_opp_half_passes": 17.3135,
                "accurate_opp_half_passes": 13.7,
                "crosses_total": 3.8449,
                "crosses_accurate": 1.1006,
                "touches": 58.7127,
                "possession_lost": 12.4223,
                "dispossessed": 0.2658,
                "duels_lost": 3.418,
                "aerial_lost": 0.8402,
                "total_contest": 1.795,
                "won_contest": 1.028,
                "ball_recovery": 2.8727,
                "challenges_lost": 0.5218,
                "fouls": 1.2508,
                "fouls_drawn": 1.9242,
                "blocks": 0.35,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0059,
                "assist_rate": 0.0059,
                "expected_goals": 0.005,
                "expected_assists": 0.0684,
                "shots_on_target": 0.007,
                "big_chances_created": 0.0292,
                "xgot": 0.0007,
                "ball_carries": 15.7262,
                "total_progression": 76.2354,
                "progressive_carries": 1.2443,
                "key_pass": 0.8623,
                "shots_off_target": 0.3799
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Elche",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1508,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Real Racing Club",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.1282,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.109,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-07",
                    "opponent": "Getafe",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-03",
                    "opponent": "Real Sociedad",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0787,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0484,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0411,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Atlético Madrid",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 0.9456,
                  "aerialWon": 0.2954,
                  "totalClearance_p90": 1.0716,
                  "totalTackle": 1.2171,
                  "defensive_actions": 1.89
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8423566818237305,
                    "model_output": 0.8424,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1179
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0443
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0382
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0327
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0123
                        }
                      ],
                      "others": -0.0089,
                      "total": 0.8424,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.128336
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.046292
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.041715
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.037113
                        },
                        {
                          "name": "touches",
                          "margin": -0.014343
                        }
                      ],
                      "others_margin": -0.010618
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.6832748651504517,
                    "model_output": 1.6833,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1801
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0858
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0482
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0408
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0332
                        }
                      ],
                      "others": 0.0517,
                      "total": 1.6833,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121707
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.053174
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.02869
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.024193
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.02016
                        }
                      ],
                      "others_margin": 0.031137
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.0502265691757202,
                    "model_output": 1.0502,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1057
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0425
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0415
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.031
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0307
                        }
                      ],
                      "others": 0.089,
                      "total": 1.0502,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.116682
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.043306
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.042312
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.031737
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.031409
                        }
                      ],
                      "others_margin": 0.088633
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.9426997900009155,
                    "model_output": 1.9427,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.8077
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3278
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.3226
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.2011
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.179
                        }
                      ],
                      "others": -0.3074,
                      "total": 1.9427,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.268274
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117662
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.115702
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.079542
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.076543
                        }
                      ],
                      "others_margin": -0.14688
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.590631902217865,
                    "model_output": 0.5906,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.5438
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1171
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0849
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0819
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0504
                        }
                      ],
                      "others": -0.0724,
                      "total": 0.5906,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.5023
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.151378
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.126143
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.121926
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.073248
                        }
                      ],
                      "others_margin": -0.115553
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.38694995641708374,
                    "model_output": 0.3869,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1414
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0518
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0207
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.011
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.0198,
                      "total": 0.3869,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.141445
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.051773
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.020662
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.011
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.009883
                        }
                      ],
                      "others_margin": -0.019658
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7989301681518555,
                    "model_output": 6.7989,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "touches_p90",
                          "contribution": 0.0503
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0208
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0166
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0135
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0081
                        }
                      ],
                      "others": 0.0229,
                      "total": 6.7989,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": 0.050338
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.020784
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.016621
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013476
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.008117
                        }
                      ],
                      "others_margin": 0.022886
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 32,
                  "role_matches": 24,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9973, quality 0.437)",
              "stats": {
                "interceptions": 0.8401,
                "tackles": 1.6787,
                "tackles_won": 1.0474,
                "clearances": 1.9375,
                "aerial_won": 0.589,
                "total_shots": 0.3859,
                "rating": 6.7989,
                "minutes": 77.11,
                "total_pass": 34.8146,
                "accurate_pass": 28.8553,
                "duels_won": 4.8998,
                "total_long_balls": 4.1907,
                "accurate_long_balls": 1.9162,
                "total_own_half_passes": 17.5479,
                "accurate_own_half_passes": 15.1923,
                "total_opp_half_passes": 17.2668,
                "accurate_opp_half_passes": 13.663,
                "crosses_total": 3.8345,
                "crosses_accurate": 1.0976,
                "touches": 58.5542,
                "possession_lost": 12.3888,
                "dispossessed": 0.2651,
                "duels_lost": 3.4088,
                "aerial_lost": 0.8379,
                "total_contest": 1.7902,
                "won_contest": 1.0252,
                "ball_recovery": 2.8649,
                "challenges_lost": 0.5204,
                "fouls": 1.2474,
                "fouls_drawn": 1.919,
                "blocks": 0.3491,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0059,
                "assist_rate": 0.0059,
                "expected_goals": 0.005,
                "expected_assists": 0.0682,
                "shots_on_target": 0.007,
                "big_chances_created": 0.0291,
                "xgot": 0.0007,
                "ball_carries": 15.6837,
                "total_progression": 76.0296,
                "progressive_carries": 1.2409,
                "key_pass": 0.86,
                "shots_off_target": 0.3789
              },
              "params": {
                "market_value_eur": 1700000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9973,
                "reference_quality": 0.505,
                "history_matches": 32,
                "history_shrink": 0.1351,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0088)",
              "stats": {
                "interceptions": 0.8377,
                "tackles": 1.6787,
                "tackles_won": 1.0482,
                "clearances": 1.9375,
                "aerial_won": 0.589,
                "total_shots": 0.3825,
                "rating": 6.7989,
                "minutes": 77.11,
                "total_pass": 34.8146,
                "accurate_pass": 28.8553,
                "duels_won": 4.8998,
                "total_long_balls": 4.1907,
                "accurate_long_balls": 1.9162,
                "total_own_half_passes": 17.5479,
                "accurate_own_half_passes": 15.1923,
                "total_opp_half_passes": 17.2668,
                "accurate_opp_half_passes": 13.663,
                "crosses_total": 3.8309,
                "crosses_accurate": 1.0976,
                "touches": 58.5542,
                "possession_lost": 12.3888,
                "dispossessed": 0.2651,
                "duels_lost": 3.4088,
                "aerial_lost": 0.8379,
                "total_contest": 1.7902,
                "won_contest": 1.0252,
                "ball_recovery": 2.8649,
                "challenges_lost": 0.5204,
                "fouls": 1.2465,
                "fouls_drawn": 1.9222,
                "blocks": 0.3491,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0058,
                "assist_rate": 0.0058,
                "expected_goals": 0.005,
                "expected_assists": 0.0682,
                "shots_on_target": 0.0069,
                "big_chances_created": 0.0291,
                "xgot": 0.0007,
                "ball_carries": 15.6837,
                "total_progression": 76.0296,
                "progressive_carries": 1.2409,
                "key_pass": 0.86,
                "shots_off_target": 0.3789
              },
              "params": {
                "blend_weight": 0.0088,
                "history_matches": 32,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8568,
                "prior_reliability": 0.1,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.8377,
                "tackles": 1.6787,
                "tackles_won": 1.0482,
                "clearances": 1.9375,
                "aerial_won": 0.589,
                "total_shots": 0.3858,
                "rating": 6.7989,
                "minutes": 77.11,
                "total_pass": 34.8146,
                "accurate_pass": 28.8553,
                "duels_won": 4.8998,
                "total_long_balls": 4.1907,
                "accurate_long_balls": 1.9162,
                "total_own_half_passes": 17.5479,
                "accurate_own_half_passes": 15.1923,
                "total_opp_half_passes": 17.2668,
                "accurate_opp_half_passes": 13.663,
                "crosses_total": 3.8309,
                "crosses_accurate": 1.0976,
                "touches": 58.5542,
                "possession_lost": 12.3888,
                "dispossessed": 0.2651,
                "duels_lost": 3.4088,
                "aerial_lost": 0.8379,
                "total_contest": 1.7902,
                "won_contest": 1.0252,
                "ball_recovery": 2.8649,
                "challenges_lost": 0.5204,
                "fouls": 1.2465,
                "fouls_drawn": 1.9222,
                "blocks": 0.3491,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0058,
                "assist_rate": 0.0058,
                "expected_goals": 0.005,
                "expected_assists": 0.0682,
                "shots_on_target": 0.0069,
                "big_chances_created": 0.0291,
                "xgot": 0.0007,
                "ball_carries": 15.6837,
                "total_progression": 76.0296,
                "progressive_carries": 1.2409,
                "key_pass": 0.86,
                "shots_off_target": 0.3789
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 0.8377,
                "tackles": 1.6787,
                "tackles_won": 1.0482,
                "clearances": 1.9375,
                "aerial_won": 0.589,
                "total_shots": 0.3858,
                "rating": 6.7989,
                "minutes": 77.11,
                "total_pass": 34.8146,
                "accurate_pass": 28.8553,
                "duels_won": 4.8998,
                "total_long_balls": 4.1907,
                "accurate_long_balls": 1.9162,
                "total_own_half_passes": 17.5479,
                "accurate_own_half_passes": 15.1923,
                "total_opp_half_passes": 17.2668,
                "accurate_opp_half_passes": 13.663,
                "crosses_total": 3.8309,
                "crosses_accurate": 1.0976,
                "touches": 58.5542,
                "possession_lost": 12.3888,
                "dispossessed": 0.2651,
                "duels_lost": 3.4088,
                "aerial_lost": 0.8379,
                "total_contest": 1.7902,
                "won_contest": 1.0252,
                "ball_recovery": 2.8649,
                "challenges_lost": 0.5204,
                "fouls": 1.2465,
                "fouls_drawn": 1.9222,
                "blocks": 0.3491,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0058,
                "assist_rate": 0.0058,
                "expected_goals": 0.005,
                "expected_assists": 0.0682,
                "shots_on_target": 0.0069,
                "big_chances_created": 0.0291,
                "xgot": 0.0007,
                "ball_carries": 15.6837,
                "total_progression": 76.0296,
                "progressive_carries": 1.2409,
                "key_pass": 0.86,
                "shots_off_target": 0.3789,
                "opponent_faced": "Toni Martínez",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Toni Martínez",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.8377,
                "tackles": 1.6787,
                "tackles_won": 1.0482,
                "clearances": 1.9375,
                "aerial_won": 0.589,
                "total_shots": 0.3858,
                "rating": 6.7989,
                "minutes": 77.11,
                "total_pass": 34.8146,
                "accurate_pass": 28.8553,
                "duels_won": 4.8998,
                "total_long_balls": 4.1907,
                "accurate_long_balls": 1.9162,
                "total_own_half_passes": 17.5479,
                "accurate_own_half_passes": 15.1923,
                "total_opp_half_passes": 17.2668,
                "accurate_opp_half_passes": 13.663,
                "crosses_total": 3.8309,
                "crosses_accurate": 1.0976,
                "touches": 58.5542,
                "possession_lost": 12.3888,
                "dispossessed": 0.2651,
                "duels_lost": 3.4088,
                "aerial_lost": 0.8379,
                "total_contest": 1.7902,
                "won_contest": 1.0252,
                "ball_recovery": 2.8649,
                "challenges_lost": 0.5204,
                "fouls": 1.2465,
                "fouls_drawn": 1.9222,
                "blocks": 0.3491,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0058,
                "assists": 0,
                "expected_goals": 0.005,
                "expected_assists": 0.0682,
                "shots_on_target": 0.0069,
                "big_chances_created": 0.0291,
                "xgot": 0.0007,
                "ball_carries": 15.6837,
                "total_progression": 76.0296,
                "progressive_carries": 1.2409,
                "key_pass": 0.86,
                "shots_off_target": 0.3789,
                "opponent_faced": "Toni Martínez",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "interceptions": 0.8377,
                "tackles": 1.6787,
                "tackles_won": 1.0482,
                "clearances": 1.9375,
                "aerial_won": 0.589,
                "total_shots": 0.3858,
                "rating": 6.7989,
                "minutes": 77.11,
                "total_pass": 34.8146,
                "accurate_pass": 28.8553,
                "duels_won": 4.8998,
                "total_long_balls": 4.1907,
                "accurate_long_balls": 1.9162,
                "total_own_half_passes": 17.5479,
                "accurate_own_half_passes": 15.1923,
                "total_opp_half_passes": 17.2668,
                "accurate_opp_half_passes": 13.663,
                "crosses_total": 3.8309,
                "crosses_accurate": 1.0976,
                "touches": 58.5542,
                "possession_lost": 12.3888,
                "dispossessed": 0.2651,
                "duels_lost": 3.4088,
                "aerial_lost": 0.8379,
                "total_contest": 1.7902,
                "won_contest": 1.0252,
                "ball_recovery": 2.8649,
                "challenges_lost": 0.5204,
                "fouls": 1.2465,
                "fouls_drawn": 1.9222,
                "blocks": 0.3491,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0058,
                "assists": 0,
                "expected_goals": 0.0056,
                "expected_assists": 0.0764,
                "shots_on_target": 0.0069,
                "big_chances_created": 0.0291,
                "xgot": 0.0008,
                "ball_carries": 15.6837,
                "total_progression": 76.0296,
                "progressive_carries": 1.2409,
                "key_pass": 0.86,
                "shots_off_target": 0.3789,
                "opponent_faced": "Toni Martínez",
                "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.9091,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0682,
                  "after": 0.0764
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 77.0)",
              "stats": {
                "interceptions": 0.8377,
                "tackles": 1.6787,
                "tackles_won": 1.0482,
                "clearances": 1.9375,
                "aerial_won": 0.589,
                "total_shots": 0.3858,
                "rating": 6.7989,
                "minutes": 77.11,
                "total_pass": 34.8146,
                "accurate_pass": 28.8553,
                "duels_won": 4.8998,
                "total_long_balls": 4.1907,
                "accurate_long_balls": 1.9162,
                "total_own_half_passes": 17.5479,
                "accurate_own_half_passes": 15.1923,
                "total_opp_half_passes": 17.2668,
                "accurate_opp_half_passes": 13.663,
                "crosses_total": 3.8309,
                "crosses_accurate": 1.0976,
                "touches": 58.5542,
                "possession_lost": 12.3888,
                "dispossessed": 0.2651,
                "duels_lost": 3.4088,
                "aerial_lost": 0.8379,
                "total_contest": 1.7902,
                "won_contest": 1.0252,
                "ball_recovery": 2.8649,
                "challenges_lost": 0.5204,
                "fouls": 1.2465,
                "fouls_drawn": 1.9222,
                "blocks": 0.3491,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0058,
                "assists": 0,
                "expected_goals": 0.0056,
                "expected_assists": 0.0764,
                "shots_on_target": 0.0069,
                "big_chances_created": 0.0291,
                "xgot": 0.0008,
                "ball_carries": 15.6837,
                "total_progression": 76.0296,
                "progressive_carries": 1.2409,
                "key_pass": 0.86,
                "shots_off_target": 0.3789,
                "opponent_faced": "Toni Martínez",
                "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.9091,
                "creation_factor": 0.8,
                "fifa_overall": 77.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": 3078,
                "fifa_rank": 1554.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.8377,
                "tackles": 1.6787,
                "tackles_won": 1.0482,
                "clearances": 1.9375,
                "aerial_won": 0.589,
                "total_shots": 0.3858,
                "rating": 6.7989,
                "minutes": 77.11,
                "total_pass": 34.8146,
                "accurate_pass": 28.8553,
                "duels_won": 4.8998,
                "total_long_balls": 4.1907,
                "accurate_long_balls": 1.9162,
                "total_own_half_passes": 17.5479,
                "accurate_own_half_passes": 15.1923,
                "total_opp_half_passes": 17.2668,
                "accurate_opp_half_passes": 13.663,
                "crosses_total": 3.8309,
                "crosses_accurate": 1.0976,
                "touches": 58.5542,
                "possession_lost": 12.3888,
                "dispossessed": 0.2651,
                "duels_lost": 3.4088,
                "aerial_lost": 0.8379,
                "total_contest": 1.7902,
                "won_contest": 1.0252,
                "ball_recovery": 2.8649,
                "challenges_lost": 0.5204,
                "fouls": 1.2465,
                "fouls_drawn": 1.9222,
                "blocks": 0.3491,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0058,
                "assists": 0,
                "expected_goals": 0.0056,
                "expected_assists": 0.0764,
                "shots_on_target": 0.0069,
                "big_chances_created": 0.0291,
                "xgot": 0.0008,
                "ball_carries": 15.6837,
                "total_progression": 76.0296,
                "progressive_carries": 1.2409,
                "key_pass": 0.86,
                "shots_off_target": 0.3789,
                "opponent_faced": "Toni Martínez",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0056,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9091,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0056,
                "goal_rate": 0.0,
                "scorer_weight": 0.0051,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0056,
                "finishing_factor": 0.9091,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.8377,
                "tackles": 1.6787,
                "tackles_won": 1.0482,
                "clearances": 1.9375,
                "aerial_won": 0.589,
                "total_shots": 0.3858,
                "rating": 6.7989,
                "minutes": 77.11,
                "total_pass": 34.8146,
                "accurate_pass": 28.8553,
                "duels_won": 4.8998,
                "total_long_balls": 4.1907,
                "accurate_long_balls": 1.9162,
                "total_own_half_passes": 17.5479,
                "accurate_own_half_passes": 15.1923,
                "total_opp_half_passes": 17.2668,
                "accurate_opp_half_passes": 13.663,
                "crosses_total": 3.8309,
                "crosses_accurate": 1.0976,
                "touches": 58.5542,
                "possession_lost": 12.3888,
                "dispossessed": 0.2651,
                "duels_lost": 3.4088,
                "aerial_lost": 0.8379,
                "total_contest": 1.7902,
                "won_contest": 1.0252,
                "ball_recovery": 2.8649,
                "challenges_lost": 0.5204,
                "fouls": 1.2465,
                "fouls_drawn": 1.9222,
                "blocks": 0.3491,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0058,
                "assists": 0,
                "expected_goals": 0.0056,
                "expected_assists": 0.0764,
                "shots_on_target": 0.0069,
                "big_chances_created": 0.0291,
                "xgot": 0.0008,
                "ball_carries": 15.6837,
                "total_progression": 76.0296,
                "progressive_carries": 1.2409,
                "key_pass": 0.86,
                "shots_off_target": 0.3789,
                "opponent_faced": "Toni Martínez",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0056,
                "projected_assists": 0,
                "assist_probability": 0.0736,
                "finishing_factor": 0.9091,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0736,
                "assist_rate": 0.0058,
                "provider_weight": 0.0611,
                "squad_weight_total": 0.6035,
                "weight_share": 0.1013,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12
              }
            }
          ]
        },
        "Hugo Burcio": {
          "player_id": 1858279,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 30,
          "height": 187,
          "market_value": 1900000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0496,
            "assist_rate": 0.0393,
            "assists": 0,
            "expected_goals": 0.0951,
            "goal_rate": 0.1465,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7455,
            "minutes": 86,
            "total_pass": 8,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 11,
            "possession_lost": 2.0051,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1221,
            "ball_carries": 4,
            "total_progression": 19,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9894,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "crosses_attempted": 2.2,
            "duel_win_rate": 0.413,
            "pressing_faced": "LOW",
            "matchup_zone": "LWB vs CB",
            "numerical_situation": "1v1",
            "opponent_defenders": "Ville Koski",
            "opponent_faced": "Ville Koski",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0907,
            "projected_assists": 0,
            "assist_probability": 0.0484,
            "finishing_factor": 1.25,
            "creation_factor": 0.947,
            "fifa_overall": 67.0
          },
          "latest_10_games": [
            {
              "match_id": 16421058,
              "match_date": "2026-10-11",
              "home_team": "Elche",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "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": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 10,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1613,
                "expected_assists": 0.0151,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 6,
                "accurate_pass": 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": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 16,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1455,
                "expected_assists": 0.0263,
                "total_shots": 1,
                "total_pass": 18,
                "accurate_pass": 16,
                "tackles": 1,
                "tackles_won": 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": 14083226,
              "match_date": "2026-01-18",
              "home_team": "Celta Vigo",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 12,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 6738,
            "combined_rank_score": 5062.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 9427.0,
            "fifa_overall": 67.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7455,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hugo Burcio",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Agustín Medina",
                  "ranking": 6733
                },
                {
                  "player_name": "José Gragera",
                  "ranking": 6734
                },
                {
                  "player_name": "Atienza",
                  "ranking": 6735
                },
                {
                  "player_name": "Javi Castro",
                  "ranking": 6736
                },
                {
                  "player_name": "Isma Ruiz",
                  "ranking": 6737
                }
              ],
              "lower": [
                {
                  "player_name": "Ismaël Gharbi",
                  "ranking": 6739
                },
                {
                  "player_name": "Álex Sala",
                  "ranking": 6740
                },
                {
                  "player_name": "Juanma Herzog",
                  "ranking": 6741
                },
                {
                  "player_name": "Mihai Popescu",
                  "ranking": 6742
                },
                {
                  "player_name": "Sondre Auklend",
                  "ranking": 6743
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.5,
          "history_matches": 4,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 4,
            "data_confidence": 0.5,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9887,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 4 historical appearances across 8 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.5902,
                "expected_assists": 0.0448,
                "assists": 0.0398,
                "assist_rate": 0.0398,
                "expected_goals": 0.0868,
                "goals": 0.1498,
                "goal_rate": 0.1498,
                "shots_on_target": 0.312,
                "total_shots": 1.0461,
                "rating": 6.7455,
                "minutes": 86.0,
                "total_pass": 7.5866,
                "accurate_pass": 6.5526,
                "duels_won": 1.3664,
                "total_long_balls": 0.8944,
                "accurate_long_balls": 0.5806,
                "total_own_half_passes": 1.5405,
                "accurate_own_half_passes": 1.5405,
                "total_opp_half_passes": 6.0461,
                "accurate_opp_half_passes": 5.0121,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.7542,
                "possession_lost": 2.028,
                "dispossessed": 0.0,
                "duels_lost": 0.8073,
                "aerial_won": 0.2267,
                "aerial_lost": 0.0,
                "interceptions": 0.3138,
                "tackles_won": 0.2267,
                "tackles": 0.4194,
                "clearances": 0.0,
                "total_contest": 0.4535,
                "won_contest": 0.2268,
                "challenges_lost": 0.2667,
                "fouls": 0.3138,
                "fouls_drawn": 0.4935,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1115,
                "ball_carries": 4.3413,
                "total_progression": 19.0225,
                "progressive_carries": 0.7602,
                "shots_off_target": 0.7341
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Elche",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.3138,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Real Racing Club",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.2667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.2267,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-01-18",
                    "opponent": "Rayo Vallecano",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1927,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.4935,
                  "creative_index": 0.0062,
                  "expectedGoals": 0.076,
                  "expectedAssists": 0.0103,
                  "onTargetScoringAttempt": 0.2667
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5901666879653931,
                    "model_output": 0.5902,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1467
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1369
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.1085
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0826
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.043
                        }
                      ],
                      "others": -0.1645,
                      "total": 0.5902,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.152075
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.141207
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.12804
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.109843
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.058692
                        }
                      ],
                      "others_margin": -0.245839
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04484112933278084,
                    "model_output": 0.0448,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0178
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0137
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0095
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0068
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0046
                        }
                      ],
                      "others": -0.0074,
                      "total": 0.0448,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.232378
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.226094
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.160975
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.11285
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.085019
                        }
                      ],
                      "others_margin": -0.151663
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.039785634726285934,
                    "model_output": 0.0398,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0172
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0135
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0065
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0062
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0055
                        }
                      ],
                      "others": -0.0115,
                      "total": 0.0398,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.219612
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.214082
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.109282
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.104268
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.101084
                        }
                      ],
                      "others_margin": -0.255412
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08677242696285248,
                    "model_output": 0.0868,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0163
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0132
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0103
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.005
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0046
                        }
                      ],
                      "others": -0.0051,
                      "total": 0.0868,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.189506
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.156047
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.107166
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.050307
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.048941
                        }
                      ],
                      "others_margin": -0.057598
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.1498035341501236,
                    "model_output": 0.1498,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.015
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0145
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0094
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0093
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0095
                        }
                      ],
                      "others": 0.0233,
                      "total": 0.1498,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.142587
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.137173
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.091385
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.08272
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.078182
                        }
                      ],
                      "others_margin": 0.168816
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.3119810223579407,
                    "model_output": 0.312,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0833
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.041
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0354
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0184
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0142
                        }
                      ],
                      "others": -0.0026,
                      "total": 0.312,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.295381
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.156081
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.117847
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.059601
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.046332
                        }
                      ],
                      "others_margin": -0.008402
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.0460560321807861,
                    "model_output": 1.0461,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2476
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1444
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0967
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0692
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0308
                        }
                      ],
                      "others": -0.0429,
                      "total": 1.0461,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.247632
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.144365
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.096656
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.069151
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.030761
                        }
                      ],
                      "others_margin": -0.04278
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.745462894439697,
                    "model_output": 6.7455,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0701
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0409
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0315
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0264
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0191
                        }
                      ],
                      "others": -0.0354,
                      "total": 6.7455,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.07008
                        },
                        {
                          "name": "rating",
                          "margin": -0.040865
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.031468
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.026417
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.019074
                        }
                      ],
                      "others_margin": -0.035459
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 4,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9887, quality 0.437)",
              "stats": {
                "key_pass": 0.5835,
                "expected_assists": 0.0443,
                "assists": 0.0393,
                "assist_rate": 0.0393,
                "expected_goals": 0.0858,
                "goals": 0.1481,
                "goal_rate": 0.1481,
                "shots_on_target": 0.3085,
                "total_shots": 1.0343,
                "rating": 6.7455,
                "minutes": 86.0,
                "total_pass": 7.5009,
                "accurate_pass": 6.4786,
                "duels_won": 1.351,
                "total_long_balls": 0.8843,
                "accurate_long_balls": 0.574,
                "total_own_half_passes": 1.5231,
                "accurate_own_half_passes": 1.5231,
                "total_opp_half_passes": 5.9778,
                "accurate_opp_half_passes": 4.9555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.6327,
                "possession_lost": 2.0051,
                "dispossessed": 0.0,
                "duels_lost": 0.7982,
                "aerial_won": 0.2241,
                "aerial_lost": 0.0,
                "interceptions": 0.3103,
                "tackles_won": 0.2241,
                "tackles": 0.4147,
                "clearances": 0.0,
                "total_contest": 0.4484,
                "won_contest": 0.2242,
                "challenges_lost": 0.2637,
                "fouls": 0.3103,
                "fouls_drawn": 0.4879,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1102,
                "ball_carries": 4.2922,
                "total_progression": 18.8075,
                "progressive_carries": 0.7516,
                "shots_off_target": 0.7258
              },
              "params": {
                "market_value_eur": 1900000,
                "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": {
                "key_pass": 0.5835,
                "expected_assists": 0.0443,
                "assists": 0.0393,
                "assist_rate": 0.0393,
                "expected_goals": 0.0858,
                "goals": 0.1481,
                "goal_rate": 0.1481,
                "shots_on_target": 0.3085,
                "total_shots": 1.0343,
                "rating": 6.7455,
                "minutes": 86.0,
                "total_pass": 7.5009,
                "accurate_pass": 6.4786,
                "duels_won": 1.351,
                "total_long_balls": 0.8843,
                "accurate_long_balls": 0.574,
                "total_own_half_passes": 1.5231,
                "accurate_own_half_passes": 1.5231,
                "total_opp_half_passes": 5.9778,
                "accurate_opp_half_passes": 4.9555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.6327,
                "possession_lost": 2.0051,
                "dispossessed": 0.0,
                "duels_lost": 0.7982,
                "aerial_won": 0.2241,
                "aerial_lost": 0.0,
                "interceptions": 0.3103,
                "tackles_won": 0.2241,
                "tackles": 0.4147,
                "clearances": 0.0,
                "total_contest": 0.4484,
                "won_contest": 0.2242,
                "challenges_lost": 0.2637,
                "fouls": 0.3103,
                "fouls_drawn": 0.4879,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1102,
                "ball_carries": 4.2922,
                "total_progression": 18.8075,
                "progressive_carries": 0.7516,
                "shots_off_target": 0.7258
              },
              "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.5835,
                "expected_assists": 0.0443,
                "assists": 0.0393,
                "assist_rate": 0.0393,
                "expected_goals": 0.0849,
                "goals": 0.1465,
                "goal_rate": 0.1465,
                "shots_on_target": 0.3052,
                "total_shots": 1.0233,
                "rating": 6.7455,
                "minutes": 86.0,
                "total_pass": 7.5009,
                "accurate_pass": 6.4786,
                "duels_won": 1.351,
                "total_long_balls": 0.8843,
                "accurate_long_balls": 0.574,
                "total_own_half_passes": 1.5231,
                "accurate_own_half_passes": 1.5231,
                "total_opp_half_passes": 5.9778,
                "accurate_opp_half_passes": 4.9555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.6327,
                "possession_lost": 2.0051,
                "dispossessed": 0.0,
                "duels_lost": 0.7982,
                "aerial_won": 1.2,
                "aerial_lost": 0.0,
                "interceptions": 0.3103,
                "tackles_won": 0.2241,
                "tackles": 0.4147,
                "clearances": 0.0,
                "total_contest": 0.4484,
                "won_contest": 0.2242,
                "challenges_lost": 0.2637,
                "fouls": 0.3103,
                "fouls_drawn": 0.4879,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.109,
                "ball_carries": 4.2922,
                "total_progression": 18.8075,
                "progressive_carries": 0.7516,
                "shots_off_target": 0.7181,
                "duel_xg_multiplier": 0.9894,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.413,
                "pressing_faced": "LOW",
                "matchup_zone": "LWB vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ville Koski",
                  "matchup_zone": "LWB vs CB",
                  "duel_win_rate": 0.413,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9894,
                  "skill_edge": -0.0152,
                  "height_edge": 0.008,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.4712,
                  "attacker_role": "LWB",
                  "attacker_mv_price_index": 0.7,
                  "defender_adjusted_parts": [
                    {
                      "player": "Ville Koski",
                      "market_value": 4300000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4712
                    }
                  ],
                  "xg_override": 0.0849
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.2241,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 1.0343,
                  "after": 1.0233
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.7258,
                  "after": 0.7181
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.5835,
                "expected_assists": 0.0443,
                "assist_rate": 0.0393,
                "assists": 0,
                "expected_goals": 0.0849,
                "goal_rate": 0.1465,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 1.0233,
                "rating": 6.7455,
                "minutes": 86.0,
                "total_pass": 7.5009,
                "accurate_pass": 6.4786,
                "duels_won": 1.351,
                "total_long_balls": 0.8843,
                "accurate_long_balls": 0.574,
                "total_own_half_passes": 1.5231,
                "accurate_own_half_passes": 1.5231,
                "total_opp_half_passes": 5.9778,
                "accurate_opp_half_passes": 4.9555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.6327,
                "possession_lost": 2.0051,
                "dispossessed": 0.0,
                "duels_lost": 0.7982,
                "aerial_won": 1.2,
                "aerial_lost": 0.0,
                "interceptions": 0.3103,
                "tackles_won": 0.2241,
                "tackles": 0.4147,
                "clearances": 0.0,
                "total_contest": 0.4484,
                "won_contest": 0.2242,
                "challenges_lost": 0.2637,
                "fouls": 0.3103,
                "fouls_drawn": 0.4879,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.109,
                "ball_carries": 4.2922,
                "total_progression": 18.8075,
                "progressive_carries": 0.7516,
                "shots_off_target": 0.7181,
                "duel_xg_multiplier": 0.9894,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.413,
                "pressing_faced": "LOW",
                "matchup_zone": "LWB vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.5835,
                "expected_assists": 0.0496,
                "assist_rate": 0.0393,
                "assists": 0,
                "expected_goals": 0.0951,
                "goal_rate": 0.1465,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 1.0233,
                "rating": 6.7455,
                "minutes": 86.0,
                "total_pass": 7.5009,
                "accurate_pass": 6.4786,
                "duels_won": 1.351,
                "total_long_balls": 0.8843,
                "accurate_long_balls": 0.574,
                "total_own_half_passes": 1.5231,
                "accurate_own_half_passes": 1.5231,
                "total_opp_half_passes": 5.9778,
                "accurate_opp_half_passes": 4.9555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.6327,
                "possession_lost": 2.0051,
                "dispossessed": 0.0,
                "duels_lost": 0.7982,
                "aerial_won": 1.2,
                "aerial_lost": 0.0,
                "interceptions": 0.3103,
                "tackles_won": 0.2241,
                "tackles": 0.4147,
                "clearances": 0.0,
                "total_contest": 0.4484,
                "won_contest": 0.2242,
                "challenges_lost": 0.2637,
                "fouls": 0.3103,
                "fouls_drawn": 0.4879,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1221,
                "ball_carries": 4.2922,
                "total_progression": 18.8075,
                "progressive_carries": 0.7516,
                "shots_off_target": 0.7181,
                "duel_xg_multiplier": 0.9894,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.413,
                "pressing_faced": "LOW",
                "matchup_zone": "LWB vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.947
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0849,
                  "after": 0.0951
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0443,
                  "after": 0.0496
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 67.0)",
              "stats": {
                "key_pass": 0.5835,
                "expected_assists": 0.0496,
                "assist_rate": 0.0393,
                "assists": 0,
                "expected_goals": 0.0951,
                "goal_rate": 0.1465,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 1.0233,
                "rating": 6.7455,
                "minutes": 86.0,
                "total_pass": 7.5009,
                "accurate_pass": 6.4786,
                "duels_won": 1.351,
                "total_long_balls": 0.8843,
                "accurate_long_balls": 0.574,
                "total_own_half_passes": 1.5231,
                "accurate_own_half_passes": 1.5231,
                "total_opp_half_passes": 5.9778,
                "accurate_opp_half_passes": 4.9555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.6327,
                "possession_lost": 2.0051,
                "dispossessed": 0.0,
                "duels_lost": 0.7982,
                "aerial_won": 1.2,
                "aerial_lost": 0.0,
                "interceptions": 0.3103,
                "tackles_won": 0.2241,
                "tackles": 0.4147,
                "clearances": 0.0,
                "total_contest": 0.4484,
                "won_contest": 0.2242,
                "challenges_lost": 0.2637,
                "fouls": 0.3103,
                "fouls_drawn": 0.4879,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1221,
                "ball_carries": 4.2922,
                "total_progression": 18.8075,
                "progressive_carries": 0.7516,
                "shots_off_target": 0.7181,
                "duel_xg_multiplier": 0.9894,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.413,
                "pressing_faced": "LOW",
                "matchup_zone": "LWB vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.947,
                "fifa_overall": 67.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": 6738,
                "fifa_rank": 9427.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 67.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.5835,
                "expected_assists": 0.0496,
                "assist_rate": 0.0393,
                "assists": 0,
                "expected_goals": 0.0951,
                "goal_rate": 0.1465,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 1.0233,
                "rating": 6.7455,
                "minutes": 86.0,
                "total_pass": 7.5009,
                "accurate_pass": 6.4786,
                "duels_won": 1.351,
                "total_long_balls": 0.8843,
                "accurate_long_balls": 0.574,
                "total_own_half_passes": 1.5231,
                "accurate_own_half_passes": 1.5231,
                "total_opp_half_passes": 5.9778,
                "accurate_opp_half_passes": 4.9555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.6327,
                "possession_lost": 2.0051,
                "dispossessed": 0.0,
                "duels_lost": 0.7982,
                "aerial_won": 1.2,
                "aerial_lost": 0.0,
                "interceptions": 0.3103,
                "tackles_won": 0.2241,
                "tackles": 0.4147,
                "clearances": 0.0,
                "total_contest": 0.4484,
                "won_contest": 0.2242,
                "challenges_lost": 0.2637,
                "fouls": 0.3103,
                "fouls_drawn": 0.4879,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1221,
                "ball_carries": 4.2922,
                "total_progression": 18.8075,
                "progressive_carries": 0.7516,
                "shots_off_target": 0.7181,
                "duel_xg_multiplier": 0.9894,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.413,
                "pressing_faced": "LOW",
                "matchup_zone": "LWB vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0907,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.947,
                "fifa_overall": 67.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0907,
                "goal_rate": 0.1465,
                "scorer_weight": 0.1189,
                "squad_weight_total": 0.9142,
                "weight_share": 0.13,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.5835,
                "expected_assists": 0.0496,
                "assist_rate": 0.0393,
                "assists": 0,
                "expected_goals": 0.0951,
                "goal_rate": 0.1465,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 1.0233,
                "rating": 6.7455,
                "minutes": 86.0,
                "total_pass": 7.5009,
                "accurate_pass": 6.4786,
                "duels_won": 1.351,
                "total_long_balls": 0.8843,
                "accurate_long_balls": 0.574,
                "total_own_half_passes": 1.5231,
                "accurate_own_half_passes": 1.5231,
                "total_opp_half_passes": 5.9778,
                "accurate_opp_half_passes": 4.9555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.6327,
                "possession_lost": 2.0051,
                "dispossessed": 0.0,
                "duels_lost": 0.7982,
                "aerial_won": 1.2,
                "aerial_lost": 0.0,
                "interceptions": 0.3103,
                "tackles_won": 0.2241,
                "tackles": 0.4147,
                "clearances": 0.0,
                "total_contest": 0.4484,
                "won_contest": 0.2242,
                "challenges_lost": 0.2637,
                "fouls": 0.3103,
                "fouls_drawn": 0.4879,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1221,
                "ball_carries": 4.2922,
                "total_progression": 18.8075,
                "progressive_carries": 0.7516,
                "shots_off_target": 0.7181,
                "duel_xg_multiplier": 0.9894,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.413,
                "pressing_faced": "LOW",
                "matchup_zone": "LWB vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ville Koski",
                "opponent_faced": "Ville Koski",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0907,
                "projected_assists": 0,
                "assist_probability": 0.0484,
                "finishing_factor": 1.25,
                "creation_factor": 0.947,
                "fifa_overall": 67.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0484,
                "assist_rate": 0.0393,
                "provider_weight": 0.047,
                "squad_weight_total": 0.6035,
                "weight_share": 0.0778,
                "creation_factor": 0.947,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12
              }
            }
          ]
        },
        "Aleix Febas": {
          "player_id": 286167,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 14,
          "height": 168,
          "market_value": 5200000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0944,
            "assist_rate": 0.0689,
            "assists": 0,
            "expected_goals": 0.0775,
            "goal_rate": 0.068,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8724,
            "minutes": 85,
            "total_pass": 45,
            "accurate_pass": 40,
            "duels_won": 6,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 14,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 31,
            "accurate_opp_half_passes": 27,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 59,
            "possession_lost": 9.0306,
            "dispossessed": 0.6848,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 0,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 3,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0085,
            "ball_carries": 17,
            "total_progression": 90,
            "progressive_carries": 2,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.9431,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.411,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Pablo Ibáñez",
            "opponent_faced": "Pablo Ibáñez",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0746,
            "projected_assists": 0,
            "assist_probability": 0.0901,
            "finishing_factor": 0.9899,
            "creation_factor": 0.886,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421058,
              "match_date": "2026-10-11",
              "home_team": "Elche",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 83,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0453,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 22,
                "tackles": 1,
                "tackles_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": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0119,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 39,
                "tackles": 4,
                "tackles_won": 1,
                "duels_won": 7,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 77,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0203,
                "expected_assists": 0.048,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 64,
                "accurate_pass": 61,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 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": 14083743,
              "match_date": "2026-05-23",
              "home_team": "Girona FC",
              "away_team": "Elche",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 84,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0111,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 20,
                "tackles": 4,
                "interceptions": 2,
                "duels_won": 13,
                "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": 14083608,
              "match_date": "2026-05-12",
              "home_team": "Real Betis",
              "away_team": "Elche",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1437,
                "expected_assists": 0.0458,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 70,
                "accurate_pass": 61,
                "duels_won": 3,
                "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": 14083578,
              "match_date": "2026-05-09",
              "home_team": "Elche",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 67,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1257,
                "expected_assists": 0.074,
                "total_shots": 1,
                "total_pass": 26,
                "accurate_pass": 18,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083401,
              "match_date": "2026-05-03",
              "home_team": "Celta Vigo",
              "away_team": "Elche",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3367,
                "total_shots": 0,
                "total_pass": 69,
                "accurate_pass": 61,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083252,
              "match_date": "2026-04-26",
              "home_team": "Real Oviedo",
              "away_team": "Elche",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.011,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 32,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 6
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083306,
              "match_date": "2026-04-22",
              "home_team": "Elche",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0252,
                "expected_assists": 0.0871,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 85,
                "accurate_pass": 78,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "aerial_won": 1,
                "duels_won": 9,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083132,
              "match_date": "2026-04-11",
              "home_team": "Elche",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0334,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 49,
                "key_pass": 1,
                "tackles": 8,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 13,
                "ball_recovery": 4
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 1425,
            "combined_rank_score": 591.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 223.0,
            "sofascore_rating": 7.1583,
            "sofascore_appearances": 36.0,
            "fifa_rank": 959.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8724,
            "source_file": "data/player_rankings.csv",
            "player_name": "Aleix Febas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mattéo Guendouzi",
                  "ranking": 1420
                },
                {
                  "player_name": "Maxim De Cuyper",
                  "ranking": 1421
                },
                {
                  "player_name": "Denis Zakaria",
                  "ranking": 1422
                },
                {
                  "player_name": "Oleg Zoteev",
                  "ranking": 1423
                },
                {
                  "player_name": "Samandar Ochilov",
                  "ranking": 1424
                }
              ],
              "lower": [
                {
                  "player_name": "Seong-uh Park",
                  "ranking": 1426
                },
                {
                  "player_name": "Umarbek Eshmuradov",
                  "ranking": 1427
                },
                {
                  "player_name": "Thomas Meunier",
                  "ranking": 1428
                },
                {
                  "player_name": "Jacob Murphy",
                  "ranking": 1429
                },
                {
                  "player_name": "Warren Zaïre-Emery",
                  "ranking": 1430
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.768,
          "history_matches": 39,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 39,
            "data_confidence": 0.768,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9986,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 166.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.54,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.12
            },
            "rationale": "XGBoost regressor (M_service) evaluated 39 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Celta Vigo, rel: 0.12, 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.7708,
                "expected_assists": 0.0844,
                "assists": 0.0696,
                "assist_rate": 0.0696,
                "expected_goals": 0.0735,
                "goals": 0.0728,
                "goal_rate": 0.0728,
                "shots_on_target": 0.3283,
                "total_shots": 0.8106,
                "rating": 6.8724,
                "minutes": 84.67,
                "total_pass": 45.0317,
                "accurate_pass": 40.1932,
                "duels_won": 6.3712,
                "total_long_balls": 1.2115,
                "accurate_long_balls": 0.6608,
                "total_own_half_passes": 14.2864,
                "accurate_own_half_passes": 13.0993,
                "total_opp_half_passes": 30.7452,
                "accurate_opp_half_passes": 27.0939,
                "crosses_total": 0.405,
                "crosses_accurate": 0.086,
                "touches": 58.6531,
                "possession_lost": 9.0433,
                "dispossessed": 0.6858,
                "duels_lost": 4.8135,
                "aerial_won": 0.1092,
                "aerial_lost": 0.4714,
                "interceptions": 0.5334,
                "tackles_won": 1.1026,
                "tackles": 2.3377,
                "clearances": 0.484,
                "total_contest": 2.0676,
                "won_contest": 0.7314,
                "challenges_lost": 0.7756,
                "fouls": 1.5716,
                "fouls_drawn": 3.206,
                "blocks": 0.2389,
                "big_chances_created": 0.0932,
                "big_chances_missed": 0.0014,
                "xgot": 0.0081,
                "ball_carries": 17.3326,
                "total_progression": 89.9983,
                "progressive_carries": 2.1401,
                "shots_off_target": 0.4823
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Elche",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Girona FC",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Deportivo Alavés",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Real Oviedo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-22",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 8.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.4034,
                  "creative_index": 0.1735,
                  "expectedGoals": 0.0337,
                  "expectedAssists": 0.0646,
                  "onTargetScoringAttempt": 0.1359
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.7708234190940857,
                    "model_output": 0.7708,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1175
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.1125
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0649
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0377
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0294
                        }
                      ],
                      "others": -0.054,
                      "total": 0.7708,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12364
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.118082
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.07497
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.04628
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.036302
                        }
                      ],
                      "others_margin": -0.067717
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.08435430377721786,
                    "model_output": 0.0844,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0129
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.01
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0056
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0055
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0053
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.0844,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.163054
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128573
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.069944
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.068532
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.062203
                        }
                      ],
                      "others_margin": -0.041438
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.06960682570934296,
                    "model_output": 0.0696,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0128
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0092
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0063
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0057
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0041
                        }
                      ],
                      "others": -0.0093,
                      "total": 0.0696,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.15864
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.11664
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.078662
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.070993
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.050357
                        }
                      ],
                      "others_margin": -0.125794
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07351237535476685,
                    "model_output": 0.0735,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0169
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0126
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0094
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0073
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0035
                        }
                      ],
                      "others": -0.0179,
                      "total": 0.0735,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.197901
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.151299
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.110865
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.087087
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.039349
                        }
                      ],
                      "others_margin": -0.217942
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07275546342134476,
                    "model_output": 0.0728,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0195
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0104
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0068
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0065
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0029
                        }
                      ],
                      "others": -0.0133,
                      "total": 0.0728,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.221769
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125076
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.073819
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.070859
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.032884
                        }
                      ],
                      "others_margin": -0.169087
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.32826003432273865,
                    "model_output": 0.3283,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0717
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0448
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0398
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0171
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0107
                        }
                      ],
                      "others": -0.0039,
                      "total": 0.3283,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.248709
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.162574
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.124907
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.051857
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.032628
                        }
                      ],
                      "others_margin": -0.011803
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8105403780937195,
                    "model_output": 0.8105,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2596
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1503
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0889
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0322
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0216
                        }
                      ],
                      "others": -0.1108,
                      "total": 0.8105,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.259616
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.150349
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.088901
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.032224
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.021591
                        }
                      ],
                      "others_margin": -0.110814
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.872421741485596,
                    "model_output": 6.8724,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0954
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0358
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0266
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0208
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0192
                        }
                      ],
                      "others": -0.0453,
                      "total": 6.8724,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.095398
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.035774
                        },
                        {
                          "name": "rating",
                          "margin": -0.026613
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.020848
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.019242
                        }
                      ],
                      "others_margin": -0.045103
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 39,
                  "role_matches": 39,
                  "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.465)",
              "stats": {
                "key_pass": 0.7697,
                "expected_assists": 0.0842,
                "assists": 0.0695,
                "assist_rate": 0.0695,
                "expected_goals": 0.0734,
                "goals": 0.0727,
                "goal_rate": 0.0727,
                "shots_on_target": 0.3278,
                "total_shots": 0.8094,
                "rating": 6.8724,
                "minutes": 84.67,
                "total_pass": 44.9687,
                "accurate_pass": 40.1369,
                "duels_won": 6.3623,
                "total_long_balls": 1.2098,
                "accurate_long_balls": 0.6599,
                "total_own_half_passes": 14.2664,
                "accurate_own_half_passes": 13.081,
                "total_opp_half_passes": 30.7022,
                "accurate_opp_half_passes": 27.056,
                "crosses_total": 0.4044,
                "crosses_accurate": 0.0859,
                "touches": 58.571,
                "possession_lost": 9.0306,
                "dispossessed": 0.6848,
                "duels_lost": 4.8068,
                "aerial_won": 0.109,
                "aerial_lost": 0.4707,
                "interceptions": 0.5327,
                "tackles_won": 1.1011,
                "tackles": 2.3344,
                "clearances": 0.4833,
                "total_contest": 2.0647,
                "won_contest": 0.7304,
                "challenges_lost": 0.7745,
                "fouls": 1.5694,
                "fouls_drawn": 3.2015,
                "blocks": 0.2386,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0014,
                "xgot": 0.0081,
                "ball_carries": 17.3083,
                "total_progression": 89.8723,
                "progressive_carries": 2.1371,
                "shots_off_target": 0.4816
              },
              "params": {
                "market_value_eur": 5200000,
                "quality_factor": 0.4646,
                "boost_factor": 0.9986,
                "reference_quality": 0.505,
                "history_matches": 39,
                "history_shrink": 0.1136,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0089)",
              "stats": {
                "key_pass": 0.7697,
                "expected_assists": 0.0842,
                "assists": 0.0689,
                "assist_rate": 0.0689,
                "expected_goals": 0.0734,
                "goals": 0.0721,
                "goal_rate": 0.0721,
                "shots_on_target": 0.3294,
                "total_shots": 0.8067,
                "rating": 6.8724,
                "minutes": 84.67,
                "total_pass": 44.9687,
                "accurate_pass": 40.1369,
                "duels_won": 6.3623,
                "total_long_balls": 1.2098,
                "accurate_long_balls": 0.6599,
                "total_own_half_passes": 14.2664,
                "accurate_own_half_passes": 13.081,
                "total_opp_half_passes": 30.7022,
                "accurate_opp_half_passes": 27.056,
                "crosses_total": 0.4008,
                "crosses_accurate": 0.0859,
                "touches": 58.571,
                "possession_lost": 9.0306,
                "dispossessed": 0.6848,
                "duels_lost": 4.8068,
                "aerial_won": 0.109,
                "aerial_lost": 0.4707,
                "interceptions": 0.5326,
                "tackles_won": 1.1006,
                "tackles": 2.3344,
                "clearances": 0.4833,
                "total_contest": 2.0647,
                "won_contest": 0.7304,
                "challenges_lost": 0.7745,
                "fouls": 1.5787,
                "fouls_drawn": 3.2056,
                "blocks": 0.2386,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0014,
                "xgot": 0.0081,
                "ball_carries": 17.3083,
                "total_progression": 89.8723,
                "progressive_carries": 2.1371,
                "shots_off_target": 0.4816
              },
              "params": {
                "blend_weight": 0.0089,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9408,
                "prior_reliability": 0.12,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.5694,
                  "after": 1.5787
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.7697,
                "expected_assists": 0.0842,
                "assists": 0.0689,
                "assist_rate": 0.0689,
                "expected_goals": 0.0734,
                "goals": 0.0721,
                "goal_rate": 0.0721,
                "shots_on_target": 0.3294,
                "total_shots": 0.811,
                "rating": 6.8724,
                "minutes": 84.67,
                "total_pass": 44.9687,
                "accurate_pass": 40.1369,
                "duels_won": 6.3623,
                "total_long_balls": 1.2098,
                "accurate_long_balls": 0.6599,
                "total_own_half_passes": 14.2664,
                "accurate_own_half_passes": 13.081,
                "total_opp_half_passes": 30.7022,
                "accurate_opp_half_passes": 27.056,
                "crosses_total": 0.4008,
                "crosses_accurate": 0.0859,
                "touches": 58.571,
                "possession_lost": 9.0306,
                "dispossessed": 0.6848,
                "duels_lost": 4.8068,
                "aerial_won": 0.109,
                "aerial_lost": 0.4707,
                "interceptions": 0.5326,
                "tackles_won": 1.1006,
                "tackles": 2.3344,
                "clearances": 0.4833,
                "total_contest": 2.0647,
                "won_contest": 0.7304,
                "challenges_lost": 0.7745,
                "fouls": 1.5787,
                "fouls_drawn": 3.2056,
                "blocks": 0.2386,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0014,
                "xgot": 0.0081,
                "ball_carries": 17.3083,
                "total_progression": 89.8723,
                "progressive_carries": 2.1371,
                "shots_off_target": 0.4816
              },
              "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.7697,
                "expected_assists": 0.0842,
                "assists": 0.0689,
                "assist_rate": 0.0689,
                "expected_goals": 0.0692,
                "goals": 0.068,
                "goal_rate": 0.068,
                "shots_on_target": 0.3107,
                "total_shots": 0.7649,
                "rating": 6.8724,
                "minutes": 84.67,
                "total_pass": 44.9687,
                "accurate_pass": 40.1369,
                "duels_won": 6.3623,
                "total_long_balls": 1.2098,
                "accurate_long_balls": 0.6599,
                "total_own_half_passes": 14.2664,
                "accurate_own_half_passes": 13.081,
                "total_opp_half_passes": 30.7022,
                "accurate_opp_half_passes": 27.056,
                "crosses_total": 0.4008,
                "crosses_accurate": 0.0859,
                "touches": 58.571,
                "possession_lost": 9.0306,
                "dispossessed": 0.6848,
                "duels_lost": 4.8068,
                "aerial_won": 0.8,
                "aerial_lost": 0.4707,
                "interceptions": 0.5326,
                "tackles_won": 1.1006,
                "tackles": 2.3344,
                "clearances": 0.4833,
                "total_contest": 2.0647,
                "won_contest": 0.7304,
                "challenges_lost": 0.7745,
                "fouls": 1.5787,
                "fouls_drawn": 3.2056,
                "blocks": 0.2386,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0013,
                "xgot": 0.0076,
                "ball_carries": 17.3083,
                "total_progression": 89.8723,
                "progressive_carries": 2.1371,
                "shots_off_target": 0.4542,
                "duel_xg_multiplier": 0.9431,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.411,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ibáñez",
                "opponent_faced": "Pablo Ibáñez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Pablo Ibáñez",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.411,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9431,
                  "skill_edge": 0.0053,
                  "height_edge": -0.044,
                  "attacker_skill": 0.4717,
                  "defender_skill": 0.46,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Pablo Ibáñez",
                      "market_value": 4099999,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.46
                    }
                  ],
                  "xg_override": 0.0692
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.109,
                  "after": 0.8
                },
                {
                  "stat": "totalShots",
                  "before": 0.811,
                  "after": 0.7649
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4816,
                  "after": 0.4542
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3294,
                  "after": 0.3107
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.7697,
                "expected_assists": 0.0842,
                "assist_rate": 0.0689,
                "assists": 0,
                "expected_goals": 0.0692,
                "goal_rate": 0.068,
                "goals": 0,
                "shots_on_target": 0.3107,
                "total_shots": 0.7649,
                "rating": 6.8724,
                "minutes": 84.67,
                "total_pass": 44.9687,
                "accurate_pass": 40.1369,
                "duels_won": 6.3623,
                "total_long_balls": 1.2098,
                "accurate_long_balls": 0.6599,
                "total_own_half_passes": 14.2664,
                "accurate_own_half_passes": 13.081,
                "total_opp_half_passes": 30.7022,
                "accurate_opp_half_passes": 27.056,
                "crosses_total": 0.4008,
                "crosses_accurate": 0.0859,
                "touches": 58.571,
                "possession_lost": 9.0306,
                "dispossessed": 0.6848,
                "duels_lost": 4.8068,
                "aerial_won": 0.8,
                "aerial_lost": 0.4707,
                "interceptions": 0.5326,
                "tackles_won": 1.1006,
                "tackles": 2.3344,
                "clearances": 0.4833,
                "total_contest": 2.0647,
                "won_contest": 0.7304,
                "challenges_lost": 0.7745,
                "fouls": 1.5787,
                "fouls_drawn": 3.2056,
                "blocks": 0.2386,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0013,
                "xgot": 0.0076,
                "ball_carries": 17.3083,
                "total_progression": 89.8723,
                "progressive_carries": 2.1371,
                "shots_off_target": 0.4542,
                "duel_xg_multiplier": 0.9431,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.411,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ibáñez",
                "opponent_faced": "Pablo Ibáñez",
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.7697,
                "expected_assists": 0.0944,
                "assist_rate": 0.0689,
                "assists": 0,
                "expected_goals": 0.0775,
                "goal_rate": 0.068,
                "goals": 0,
                "shots_on_target": 0.3107,
                "total_shots": 0.7649,
                "rating": 6.8724,
                "minutes": 84.67,
                "total_pass": 44.9687,
                "accurate_pass": 40.1369,
                "duels_won": 6.3623,
                "total_long_balls": 1.2098,
                "accurate_long_balls": 0.6599,
                "total_own_half_passes": 14.2664,
                "accurate_own_half_passes": 13.081,
                "total_opp_half_passes": 30.7022,
                "accurate_opp_half_passes": 27.056,
                "crosses_total": 0.4008,
                "crosses_accurate": 0.0859,
                "touches": 58.571,
                "possession_lost": 9.0306,
                "dispossessed": 0.6848,
                "duels_lost": 4.8068,
                "aerial_won": 0.8,
                "aerial_lost": 0.4707,
                "interceptions": 0.5326,
                "tackles_won": 1.1006,
                "tackles": 2.3344,
                "clearances": 0.4833,
                "total_contest": 2.0647,
                "won_contest": 0.7304,
                "challenges_lost": 0.7745,
                "fouls": 1.5787,
                "fouls_drawn": 3.2056,
                "blocks": 0.2386,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0013,
                "xgot": 0.0085,
                "ball_carries": 17.3083,
                "total_progression": 89.8723,
                "progressive_carries": 2.1371,
                "shots_off_target": 0.4542,
                "duel_xg_multiplier": 0.9431,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.411,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ibáñez",
                "opponent_faced": "Pablo Ibáñez",
                "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.9899,
                "creation_factor": 0.886
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0692,
                  "after": 0.0775
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0842,
                  "after": 0.0944
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 79.0)",
              "stats": {
                "key_pass": 0.7697,
                "expected_assists": 0.0944,
                "assist_rate": 0.0689,
                "assists": 0,
                "expected_goals": 0.0775,
                "goal_rate": 0.068,
                "goals": 0,
                "shots_on_target": 0.3107,
                "total_shots": 0.7649,
                "rating": 6.8724,
                "minutes": 84.67,
                "total_pass": 44.9687,
                "accurate_pass": 40.1369,
                "duels_won": 6.3623,
                "total_long_balls": 1.2098,
                "accurate_long_balls": 0.6599,
                "total_own_half_passes": 14.2664,
                "accurate_own_half_passes": 13.081,
                "total_opp_half_passes": 30.7022,
                "accurate_opp_half_passes": 27.056,
                "crosses_total": 0.4008,
                "crosses_accurate": 0.0859,
                "touches": 58.571,
                "possession_lost": 9.0306,
                "dispossessed": 0.6848,
                "duels_lost": 4.8068,
                "aerial_won": 0.8,
                "aerial_lost": 0.4707,
                "interceptions": 0.5326,
                "tackles_won": 1.1006,
                "tackles": 2.3344,
                "clearances": 0.4833,
                "total_contest": 2.0647,
                "won_contest": 0.7304,
                "challenges_lost": 0.7745,
                "fouls": 1.5787,
                "fouls_drawn": 3.2056,
                "blocks": 0.2386,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0013,
                "xgot": 0.0085,
                "ball_carries": 17.3083,
                "total_progression": 89.8723,
                "progressive_carries": 2.1371,
                "shots_off_target": 0.4542,
                "duel_xg_multiplier": 0.9431,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.411,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ibáñez",
                "opponent_faced": "Pablo Ibáñez",
                "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.9899,
                "creation_factor": 0.886,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1425,
                "fifa_rank": 959.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.7697,
                "expected_assists": 0.0944,
                "assist_rate": 0.0689,
                "assists": 0,
                "expected_goals": 0.0775,
                "goal_rate": 0.068,
                "goals": 0,
                "shots_on_target": 0.3107,
                "total_shots": 0.7649,
                "rating": 6.8724,
                "minutes": 84.67,
                "total_pass": 44.9687,
                "accurate_pass": 40.1369,
                "duels_won": 6.3623,
                "total_long_balls": 1.2098,
                "accurate_long_balls": 0.6599,
                "total_own_half_passes": 14.2664,
                "accurate_own_half_passes": 13.081,
                "total_opp_half_passes": 30.7022,
                "accurate_opp_half_passes": 27.056,
                "crosses_total": 0.4008,
                "crosses_accurate": 0.0859,
                "touches": 58.571,
                "possession_lost": 9.0306,
                "dispossessed": 0.6848,
                "duels_lost": 4.8068,
                "aerial_won": 0.8,
                "aerial_lost": 0.4707,
                "interceptions": 0.5326,
                "tackles_won": 1.1006,
                "tackles": 2.3344,
                "clearances": 0.4833,
                "total_contest": 2.0647,
                "won_contest": 0.7304,
                "challenges_lost": 0.7745,
                "fouls": 1.5787,
                "fouls_drawn": 3.2056,
                "blocks": 0.2386,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0013,
                "xgot": 0.0085,
                "ball_carries": 17.3083,
                "total_progression": 89.8723,
                "progressive_carries": 2.1371,
                "shots_off_target": 0.4542,
                "duel_xg_multiplier": 0.9431,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.411,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ibáñez",
                "opponent_faced": "Pablo Ibáñez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0746,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9899,
                "creation_factor": 0.886,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0746,
                "goal_rate": 0.068,
                "scorer_weight": 0.0767,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0839,
                "finishing_factor": 0.9899,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.7697,
                "expected_assists": 0.0944,
                "assist_rate": 0.0689,
                "assists": 0,
                "expected_goals": 0.0775,
                "goal_rate": 0.068,
                "goals": 0,
                "shots_on_target": 0.3107,
                "total_shots": 0.7649,
                "rating": 6.8724,
                "minutes": 84.67,
                "total_pass": 44.9687,
                "accurate_pass": 40.1369,
                "duels_won": 6.3623,
                "total_long_balls": 1.2098,
                "accurate_long_balls": 0.6599,
                "total_own_half_passes": 14.2664,
                "accurate_own_half_passes": 13.081,
                "total_opp_half_passes": 30.7022,
                "accurate_opp_half_passes": 27.056,
                "crosses_total": 0.4008,
                "crosses_accurate": 0.0859,
                "touches": 58.571,
                "possession_lost": 9.0306,
                "dispossessed": 0.6848,
                "duels_lost": 4.8068,
                "aerial_won": 0.8,
                "aerial_lost": 0.4707,
                "interceptions": 0.5326,
                "tackles_won": 1.1006,
                "tackles": 2.3344,
                "clearances": 0.4833,
                "total_contest": 2.0647,
                "won_contest": 0.7304,
                "challenges_lost": 0.7745,
                "fouls": 1.5787,
                "fouls_drawn": 3.2056,
                "blocks": 0.2386,
                "big_chances_created": 0.0931,
                "big_chances_missed": 0.0013,
                "xgot": 0.0085,
                "ball_carries": 17.3083,
                "total_progression": 89.8723,
                "progressive_carries": 2.1371,
                "shots_off_target": 0.4542,
                "duel_xg_multiplier": 0.9431,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.411,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ibáñez",
                "opponent_faced": "Pablo Ibáñez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0746,
                "projected_assists": 0,
                "assist_probability": 0.0901,
                "finishing_factor": 0.9899,
                "creation_factor": 0.886,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0901,
                "assist_rate": 0.0689,
                "provider_weight": 0.0836,
                "squad_weight_total": 0.6035,
                "weight_share": 0.1386,
                "creation_factor": 0.886,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12
              }
            }
          ]
        },
        "Álvaro Núñez": {
          "player_id": 1012410,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 15,
          "height": 174,
          "market_value": 3900000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.8168,
            "minutes": 81,
            "total_pass": 52,
            "accurate_pass": 47,
            "duels_won": 3,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 26,
            "accurate_own_half_passes": 24,
            "total_opp_half_passes": 26,
            "accurate_opp_half_passes": 23,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 64,
            "possession_lost": 7.0807,
            "dispossessed": 0.0423,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0204,
            "assists": 0,
            "expected_goals": 0.0157,
            "expected_assists": 0.0659,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0162,
            "ball_carries": 19,
            "total_progression": 47,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Lucas Boyé",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0156,
            "projected_assists": 0,
            "assist_probability": 0.0638,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16421058,
              "match_date": "2026-10-11",
              "home_team": "Elche",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0161,
                "expected_assists": 0.0364,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 47,
                "accurate_pass": 40,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 1,
                "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": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0357,
                "expected_assists": 0.0121,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 49,
                "accurate_pass": 44,
                "tackles": 2,
                "tackles_won": 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": 16416340,
              "match_date": "2026-09-03",
              "home_team": "Real Sociedad",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 84,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0054,
                "expected_assists": 0.0229,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 76,
                "accurate_pass": 72,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "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": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0211,
                "total_shots": 0,
                "total_pass": 70,
                "accurate_pass": 67,
                "key_pass": 1,
                "tackles": 2,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083551,
              "match_date": "2026-05-09",
              "home_team": "Atlético Madrid",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 68,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0458,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 43,
                "key_pass": 1,
                "tackles": 2,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083401,
              "match_date": "2026-05-03",
              "home_team": "Celta Vigo",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 78,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 17,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083248,
              "match_date": "2026-04-26",
              "home_team": "Villarreal",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 14,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0066,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 16,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083123,
              "match_date": "2026-04-12",
              "home_team": "Celta Vigo",
              "away_team": "Real Oviedo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 60,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0112,
                "total_shots": 0,
                "total_pass": 55,
                "accurate_pass": 53,
                "tackles": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083689,
              "match_date": "2026-03-22",
              "home_team": "Celta Vigo",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 54,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.015,
                "expected_assists": 0.011,
                "total_shots": 1,
                "total_pass": 42,
                "accurate_pass": 38,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083622,
              "match_date": "2026-03-15",
              "home_team": "Real Betis",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 58,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0362,
                "expected_assists": 0.0041,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 48,
                "accurate_pass": 45,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3210,
            "combined_rank_score": 1161.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1987.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8168,
            "source_file": "data/player_rankings.csv",
            "player_name": "Álvaro Núñez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Franck Honorat",
                  "ranking": 3205
                },
                {
                  "player_name": "Djibril Sow",
                  "ranking": 3206
                },
                {
                  "player_name": "Pepelu",
                  "ranking": 3207
                },
                {
                  "player_name": "Dayann Methalie",
                  "ranking": 3208
                },
                {
                  "player_name": "Robin Gosens",
                  "ranking": 3209
                }
              ],
              "lower": [
                {
                  "player_name": "Marvin Schwäbe",
                  "ranking": 3211
                },
                {
                  "player_name": "Moi Gómez",
                  "ranking": 3212
                },
                {
                  "player_name": "Benjamin Henrichs",
                  "ranking": 3213
                },
                {
                  "player_name": "Harvey Elliott",
                  "ranking": 3214
                },
                {
                  "player_name": "Azor Matusiwa",
                  "ranking": 3215
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "history_matches": 29,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 29,
            "data_confidence": 0.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9975,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 173.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.52,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (D_service) evaluated 29 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Celta Vigo, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.7741,
                "tackles": 1.4497,
                "tackles_won": 0.9151,
                "clearances": 2.0674,
                "aerial_won": 0.6237,
                "total_shots": 0.573,
                "rating": 6.8168,
                "minutes": 81.2,
                "total_pass": 52.0805,
                "accurate_pass": 47.4913,
                "duels_won": 2.5986,
                "total_long_balls": 3.7424,
                "accurate_long_balls": 1.9247,
                "total_own_half_passes": 26.1257,
                "accurate_own_half_passes": 24.4657,
                "total_opp_half_passes": 25.9549,
                "accurate_opp_half_passes": 23.0257,
                "crosses_total": 1.4937,
                "crosses_accurate": 0.2644,
                "touches": 63.7191,
                "possession_lost": 7.0984,
                "dispossessed": 0.0424,
                "duels_lost": 2.0905,
                "aerial_lost": 0.6085,
                "total_contest": 0.2112,
                "won_contest": 0.1429,
                "ball_recovery": 2.5757,
                "challenges_lost": 0.6031,
                "fouls": 0.7741,
                "fouls_drawn": 0.623,
                "blocks": 0.1581,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0208,
                "assist_rate": 0.0208,
                "expected_goals": 0.014,
                "expected_assists": 0.0589,
                "shots_on_target": 0.2797,
                "big_chances_created": 0.06,
                "xgot": 0.0145,
                "ball_carries": 19.0904,
                "total_progression": 47.4453,
                "progressive_carries": 0.8803,
                "key_pass": 0.4388,
                "shots_off_target": 0.2933
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1514,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1287,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-03",
                    "opponent": "Real Sociedad",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1094,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.093,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Atlético Madrid",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.079,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Elche",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.0672,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Villarreal",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0571,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Real Oviedo",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0485,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Deportivo Alavés",
                    "minutes": 54.0,
                    "is_starting": true,
                    "weight": 0.0412,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Real Betis",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.1161,
                  "aerialWon": 0.3163,
                  "totalClearance_p90": 1.1839,
                  "totalTackle": 1.4238,
                  "defensive_actions": 1.9586
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.7740734219551086,
                    "model_output": 0.7741,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1198
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0829
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0378
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0361
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0246
                        }
                      ],
                      "others": -0.0252,
                      "total": 0.7741,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130245
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.088322
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.043005
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.042899
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.030304
                        }
                      ],
                      "others_margin": -0.031996
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.449732780456543,
                    "model_output": 1.4497,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1738
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0548
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0565
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.038
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0321
                        }
                      ],
                      "others": -0.1568,
                      "total": 1.4497,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.117708
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.034408
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.034294
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.022948
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.019761
                        }
                      ],
                      "others_margin": -0.102708
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.9151391983032227,
                    "model_output": 0.9151,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1032
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0377
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0278
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0267
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0265
                        }
                      ],
                      "others": -0.161,
                      "total": 0.9151,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114104
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.038616
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.027565
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.025779
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.024958
                        }
                      ],
                      "others_margin": -0.162072
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.0674240589141846,
                    "model_output": 2.0674,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.8044
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3316
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.3234
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.2198
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.174
                        }
                      ],
                      "others": -0.1753,
                      "total": 2.0674,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.267019
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118806
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.115689
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.087049
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.074713
                        }
                      ],
                      "others_margin": -0.081389
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.6237340569496155,
                    "model_output": 0.6237,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.5446
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1073
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0985
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0917
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0366
                        }
                      ],
                      "others": -0.0719,
                      "total": 0.6237,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.503238
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.137985
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.1273
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.118015
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.051249
                        }
                      ],
                      "others_margin": -0.108977
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5730196237564087,
                    "model_output": 0.573,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0649
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0376
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0227
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0107
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0091
                        }
                      ],
                      "others": -0.0251,
                      "total": 0.573,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.064931
                        },
                        {
                          "name": "rating",
                          "margin": 0.037585
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.022652
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.010723
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.009093
                        }
                      ],
                      "others_margin": -0.025019
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.816758632659912,
                    "model_output": 6.8168,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "accuratePass",
                          "contribution": 0.0231
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0139
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0135
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0125
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0061
                        }
                      ],
                      "others": -0.012,
                      "total": 6.8168,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "accuratePass",
                          "margin": 0.023055
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.013943
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.013452
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.012489
                        },
                        {
                          "name": "rating",
                          "margin": 0.0061
                        }
                      ],
                      "others_margin": -0.012004
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 29,
                  "role_matches": 28,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9975, quality 0.449)",
              "stats": {
                "interceptions": 0.7721,
                "tackles": 1.4461,
                "tackles_won": 0.9129,
                "clearances": 2.0623,
                "aerial_won": 0.6222,
                "total_shots": 0.5716,
                "rating": 6.8168,
                "minutes": 81.2,
                "total_pass": 51.9503,
                "accurate_pass": 47.3726,
                "duels_won": 2.5921,
                "total_long_balls": 3.733,
                "accurate_long_balls": 1.9199,
                "total_own_half_passes": 26.0604,
                "accurate_own_half_passes": 24.4045,
                "total_opp_half_passes": 25.89,
                "accurate_opp_half_passes": 22.9681,
                "crosses_total": 1.49,
                "crosses_accurate": 0.2637,
                "touches": 63.5598,
                "possession_lost": 7.0807,
                "dispossessed": 0.0423,
                "duels_lost": 2.0853,
                "aerial_lost": 0.607,
                "total_contest": 0.2107,
                "won_contest": 0.1425,
                "ball_recovery": 2.5693,
                "challenges_lost": 0.6016,
                "fouls": 0.7722,
                "fouls_drawn": 0.6214,
                "blocks": 0.1577,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0207,
                "assist_rate": 0.0207,
                "expected_goals": 0.014,
                "expected_assists": 0.0588,
                "shots_on_target": 0.279,
                "big_chances_created": 0.0599,
                "xgot": 0.0145,
                "ball_carries": 19.0427,
                "total_progression": 47.3267,
                "progressive_carries": 0.8781,
                "key_pass": 0.4377,
                "shots_off_target": 0.2926
              },
              "params": {
                "market_value_eur": 3900000,
                "quality_factor": 0.4486,
                "boost_factor": 0.9975,
                "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.0121)",
              "stats": {
                "interceptions": 0.78,
                "tackles": 1.4461,
                "tackles_won": 0.9076,
                "clearances": 2.0623,
                "aerial_won": 0.6222,
                "total_shots": 0.5704,
                "rating": 6.8168,
                "minutes": 81.2,
                "total_pass": 51.9503,
                "accurate_pass": 47.3726,
                "duels_won": 2.5921,
                "total_long_balls": 3.733,
                "accurate_long_balls": 1.9199,
                "total_own_half_passes": 26.0604,
                "accurate_own_half_passes": 24.4045,
                "total_opp_half_passes": 25.89,
                "accurate_opp_half_passes": 22.9681,
                "crosses_total": 1.4835,
                "crosses_accurate": 0.2637,
                "touches": 63.5598,
                "possession_lost": 7.0807,
                "dispossessed": 0.0423,
                "duels_lost": 2.0853,
                "aerial_lost": 0.607,
                "total_contest": 0.2107,
                "won_contest": 0.1425,
                "ball_recovery": 2.5693,
                "challenges_lost": 0.6016,
                "fouls": 0.7743,
                "fouls_drawn": 0.6196,
                "blocks": 0.1577,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0204,
                "assist_rate": 0.0204,
                "expected_goals": 0.014,
                "expected_assists": 0.0588,
                "shots_on_target": 0.2813,
                "big_chances_created": 0.0599,
                "xgot": 0.0145,
                "ball_carries": 19.0427,
                "total_progression": 47.3267,
                "progressive_carries": 0.8781,
                "key_pass": 0.4377,
                "shots_off_target": 0.2926
              },
              "params": {
                "blend_weight": 0.0121,
                "history_matches": 29,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9022,
                "prior_reliability": 0.1267,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 0.7721,
                  "after": 0.78
                },
                {
                  "stat": "totalCross",
                  "before": 1.49,
                  "after": 1.4835
                },
                {
                  "stat": "wonTackle",
                  "before": 0.9129,
                  "after": 0.9076
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.78,
                "tackles": 1.4461,
                "tackles_won": 0.9076,
                "clearances": 2.0623,
                "aerial_won": 0.6222,
                "total_shots": 0.5739,
                "rating": 6.8168,
                "minutes": 81.2,
                "total_pass": 51.9503,
                "accurate_pass": 47.3726,
                "duels_won": 2.5921,
                "total_long_balls": 3.733,
                "accurate_long_balls": 1.9199,
                "total_own_half_passes": 26.0604,
                "accurate_own_half_passes": 24.4045,
                "total_opp_half_passes": 25.89,
                "accurate_opp_half_passes": 22.9681,
                "crosses_total": 1.4835,
                "crosses_accurate": 0.2637,
                "touches": 63.5598,
                "possession_lost": 7.0807,
                "dispossessed": 0.0423,
                "duels_lost": 2.0853,
                "aerial_lost": 0.607,
                "total_contest": 0.2107,
                "won_contest": 0.1425,
                "ball_recovery": 2.5693,
                "challenges_lost": 0.6016,
                "fouls": 0.7743,
                "fouls_drawn": 0.6196,
                "blocks": 0.1577,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0204,
                "assist_rate": 0.0204,
                "expected_goals": 0.014,
                "expected_assists": 0.0588,
                "shots_on_target": 0.2813,
                "big_chances_created": 0.0599,
                "xgot": 0.0145,
                "ball_carries": 19.0427,
                "total_progression": 47.3267,
                "progressive_carries": 0.8781,
                "key_pass": 0.4377,
                "shots_off_target": 0.2926
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 0.78,
                "tackles": 1.4461,
                "tackles_won": 0.9076,
                "clearances": 2.0623,
                "aerial_won": 0.6222,
                "total_shots": 0.5739,
                "rating": 6.8168,
                "minutes": 81.2,
                "total_pass": 51.9503,
                "accurate_pass": 47.3726,
                "duels_won": 2.5921,
                "total_long_balls": 3.733,
                "accurate_long_balls": 1.9199,
                "total_own_half_passes": 26.0604,
                "accurate_own_half_passes": 24.4045,
                "total_opp_half_passes": 25.89,
                "accurate_opp_half_passes": 22.9681,
                "crosses_total": 1.4835,
                "crosses_accurate": 0.2637,
                "touches": 63.5598,
                "possession_lost": 7.0807,
                "dispossessed": 0.0423,
                "duels_lost": 2.0853,
                "aerial_lost": 0.607,
                "total_contest": 0.2107,
                "won_contest": 0.1425,
                "ball_recovery": 2.5693,
                "challenges_lost": 0.6016,
                "fouls": 0.7743,
                "fouls_drawn": 0.6196,
                "blocks": 0.1577,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0204,
                "assist_rate": 0.0204,
                "expected_goals": 0.014,
                "expected_assists": 0.0588,
                "shots_on_target": 0.2813,
                "big_chances_created": 0.0599,
                "xgot": 0.0145,
                "ball_carries": 19.0427,
                "total_progression": 47.3267,
                "progressive_carries": 0.8781,
                "key_pass": 0.4377,
                "shots_off_target": 0.2926,
                "opponent_faced": "Lucas Boyé",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Lucas Boyé",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.78,
                "tackles": 1.4461,
                "tackles_won": 0.9076,
                "clearances": 2.0623,
                "aerial_won": 0.6222,
                "total_shots": 0.5739,
                "rating": 6.8168,
                "minutes": 81.2,
                "total_pass": 51.9503,
                "accurate_pass": 47.3726,
                "duels_won": 2.5921,
                "total_long_balls": 3.733,
                "accurate_long_balls": 1.9199,
                "total_own_half_passes": 26.0604,
                "accurate_own_half_passes": 24.4045,
                "total_opp_half_passes": 25.89,
                "accurate_opp_half_passes": 22.9681,
                "crosses_total": 1.4835,
                "crosses_accurate": 0.2637,
                "touches": 63.5598,
                "possession_lost": 7.0807,
                "dispossessed": 0.0423,
                "duels_lost": 2.0853,
                "aerial_lost": 0.607,
                "total_contest": 0.2107,
                "won_contest": 0.1425,
                "ball_recovery": 2.5693,
                "challenges_lost": 0.6016,
                "fouls": 0.7743,
                "fouls_drawn": 0.6196,
                "blocks": 0.1577,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0204,
                "assists": 0,
                "expected_goals": 0.014,
                "expected_assists": 0.0588,
                "shots_on_target": 0.2813,
                "big_chances_created": 0.0599,
                "xgot": 0.0145,
                "ball_carries": 19.0427,
                "total_progression": 47.3267,
                "progressive_carries": 0.8781,
                "key_pass": 0.4377,
                "shots_off_target": 0.2926,
                "opponent_faced": "Lucas Boyé",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "interceptions": 0.78,
                "tackles": 1.4461,
                "tackles_won": 0.9076,
                "clearances": 2.0623,
                "aerial_won": 0.6222,
                "total_shots": 0.5739,
                "rating": 6.8168,
                "minutes": 81.2,
                "total_pass": 51.9503,
                "accurate_pass": 47.3726,
                "duels_won": 2.5921,
                "total_long_balls": 3.733,
                "accurate_long_balls": 1.9199,
                "total_own_half_passes": 26.0604,
                "accurate_own_half_passes": 24.4045,
                "total_opp_half_passes": 25.89,
                "accurate_opp_half_passes": 22.9681,
                "crosses_total": 1.4835,
                "crosses_accurate": 0.2637,
                "touches": 63.5598,
                "possession_lost": 7.0807,
                "dispossessed": 0.0423,
                "duels_lost": 2.0853,
                "aerial_lost": 0.607,
                "total_contest": 0.2107,
                "won_contest": 0.1425,
                "ball_recovery": 2.5693,
                "challenges_lost": 0.6016,
                "fouls": 0.7743,
                "fouls_drawn": 0.6196,
                "blocks": 0.1577,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0204,
                "assists": 0,
                "expected_goals": 0.0157,
                "expected_assists": 0.0659,
                "shots_on_target": 0.2813,
                "big_chances_created": 0.0599,
                "xgot": 0.0162,
                "ball_carries": 19.0427,
                "total_progression": 47.3267,
                "progressive_carries": 0.8781,
                "key_pass": 0.4377,
                "shots_off_target": 0.2926,
                "opponent_faced": "Lucas Boyé",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0588,
                  "after": 0.0659
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 76.0)",
              "stats": {
                "interceptions": 0.78,
                "tackles": 1.4461,
                "tackles_won": 0.9076,
                "clearances": 2.0623,
                "aerial_won": 0.6222,
                "total_shots": 0.5739,
                "rating": 6.8168,
                "minutes": 81.2,
                "total_pass": 51.9503,
                "accurate_pass": 47.3726,
                "duels_won": 2.5921,
                "total_long_balls": 3.733,
                "accurate_long_balls": 1.9199,
                "total_own_half_passes": 26.0604,
                "accurate_own_half_passes": 24.4045,
                "total_opp_half_passes": 25.89,
                "accurate_opp_half_passes": 22.9681,
                "crosses_total": 1.4835,
                "crosses_accurate": 0.2637,
                "touches": 63.5598,
                "possession_lost": 7.0807,
                "dispossessed": 0.0423,
                "duels_lost": 2.0853,
                "aerial_lost": 0.607,
                "total_contest": 0.2107,
                "won_contest": 0.1425,
                "ball_recovery": 2.5693,
                "challenges_lost": 0.6016,
                "fouls": 0.7743,
                "fouls_drawn": 0.6196,
                "blocks": 0.1577,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0204,
                "assists": 0,
                "expected_goals": 0.0157,
                "expected_assists": 0.0659,
                "shots_on_target": 0.2813,
                "big_chances_created": 0.0599,
                "xgot": 0.0162,
                "ball_carries": 19.0427,
                "total_progression": 47.3267,
                "progressive_carries": 0.8781,
                "key_pass": 0.4377,
                "shots_off_target": 0.2926,
                "opponent_faced": "Lucas Boyé",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3210,
                "fifa_rank": 1987.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.78,
                "tackles": 1.4461,
                "tackles_won": 0.9076,
                "clearances": 2.0623,
                "aerial_won": 0.6222,
                "total_shots": 0.5739,
                "rating": 6.8168,
                "minutes": 81.2,
                "total_pass": 51.9503,
                "accurate_pass": 47.3726,
                "duels_won": 2.5921,
                "total_long_balls": 3.733,
                "accurate_long_balls": 1.9199,
                "total_own_half_passes": 26.0604,
                "accurate_own_half_passes": 24.4045,
                "total_opp_half_passes": 25.89,
                "accurate_opp_half_passes": 22.9681,
                "crosses_total": 1.4835,
                "crosses_accurate": 0.2637,
                "touches": 63.5598,
                "possession_lost": 7.0807,
                "dispossessed": 0.0423,
                "duels_lost": 2.0853,
                "aerial_lost": 0.607,
                "total_contest": 0.2107,
                "won_contest": 0.1425,
                "ball_recovery": 2.5693,
                "challenges_lost": 0.6016,
                "fouls": 0.7743,
                "fouls_drawn": 0.6196,
                "blocks": 0.1577,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0204,
                "assists": 0,
                "expected_goals": 0.0157,
                "expected_assists": 0.0659,
                "shots_on_target": 0.2813,
                "big_chances_created": 0.0599,
                "xgot": 0.0162,
                "ball_carries": 19.0427,
                "total_progression": 47.3267,
                "progressive_carries": 0.8781,
                "key_pass": 0.4377,
                "shots_off_target": 0.2926,
                "opponent_faced": "Lucas Boyé",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0156,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0156,
                "goal_rate": 0.0,
                "scorer_weight": 0.0126,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0137,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.78,
                "tackles": 1.4461,
                "tackles_won": 0.9076,
                "clearances": 2.0623,
                "aerial_won": 0.6222,
                "total_shots": 0.5739,
                "rating": 6.8168,
                "minutes": 81.2,
                "total_pass": 51.9503,
                "accurate_pass": 47.3726,
                "duels_won": 2.5921,
                "total_long_balls": 3.733,
                "accurate_long_balls": 1.9199,
                "total_own_half_passes": 26.0604,
                "accurate_own_half_passes": 24.4045,
                "total_opp_half_passes": 25.89,
                "accurate_opp_half_passes": 22.9681,
                "crosses_total": 1.4835,
                "crosses_accurate": 0.2637,
                "touches": 63.5598,
                "possession_lost": 7.0807,
                "dispossessed": 0.0423,
                "duels_lost": 2.0853,
                "aerial_lost": 0.607,
                "total_contest": 0.2107,
                "won_contest": 0.1425,
                "ball_recovery": 2.5693,
                "challenges_lost": 0.6016,
                "fouls": 0.7743,
                "fouls_drawn": 0.6196,
                "blocks": 0.1577,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0204,
                "assists": 0,
                "expected_goals": 0.0157,
                "expected_assists": 0.0659,
                "shots_on_target": 0.2813,
                "big_chances_created": 0.0599,
                "xgot": 0.0162,
                "ball_carries": 19.0427,
                "total_progression": 47.3267,
                "progressive_carries": 0.8781,
                "key_pass": 0.4377,
                "shots_off_target": 0.2926,
                "opponent_faced": "Lucas Boyé",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0156,
                "projected_assists": 0,
                "assist_probability": 0.0638,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0638,
                "assist_rate": 0.0204,
                "provider_weight": 0.0527,
                "squad_weight_total": 0.6035,
                "weight_share": 0.0874,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12
              }
            }
          ]
        },
        "Yoel Lago": {
          "player_id": 1145100,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 18,
          "height": 185,
          "market_value": 7000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 6.8329,
            "minutes": 89,
            "total_pass": 51,
            "accurate_pass": 48,
            "duels_won": 4,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 34,
            "accurate_own_half_passes": 33,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 15,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 66,
            "possession_lost": 3.6804,
            "dispossessed": 0.134,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 0,
            "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.0,
            "assists": 0,
            "expected_goals": 0.0152,
            "expected_assists": 0.013,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 16,
            "total_progression": 64,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 2.0,
            "tackles_won_in_zone": 1.7,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.655,
            "opponent_faced": "Jonny Otto",
            "pressing_zone": "LWB vs CB",
            "matchup_zone": "LWB vs CB",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0151,
            "projected_assists": 0,
            "assist_probability": 0.0129,
            "finishing_factor": 0.8,
            "creation_factor": 0.8117,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16421058,
              "match_date": "2026-10-11",
              "home_team": "Elche",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.007,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 36,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 9,
                "aerial_won": 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": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0909,
                "expected_assists": 0.0075,
                "total_shots": 1,
                "total_pass": 39,
                "accurate_pass": 37,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 4,
                "clearances": 6,
                "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": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0184,
                "total_shots": 0,
                "total_pass": 61,
                "accurate_pass": 60,
                "tackles": 1,
                "interceptions": 4,
                "clearances": 4,
                "duels_won": 3,
                "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": 16416348,
              "match_date": "2026-09-07",
              "home_team": "Getafe",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0396,
                "total_shots": 0,
                "total_pass": 79,
                "accurate_pass": 70,
                "interceptions": 1,
                "clearances": 6,
                "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": 16416340,
              "match_date": "2026-09-03",
              "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_assists": 0.0061,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 41,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 4,
                "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": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0163,
                "total_shots": 0,
                "total_pass": 63,
                "accurate_pass": 55,
                "tackles": 1,
                "clearances": 1,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.005,
                "total_shots": 0,
                "total_pass": 57,
                "accurate_pass": 54,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0065,
                "total_shots": 0,
                "total_pass": 63,
                "accurate_pass": 60,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 5,
                "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": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0268,
                "expected_assists": 0.0084,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 74,
                "accurate_pass": 68,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 6,
                "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": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 27,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 9,
                "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": 4693,
            "combined_rank_score": 2782.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 542.0,
            "sofascore_rating": 6.825,
            "sofascore_appearances": 4.0,
            "fifa_rank": 5023.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8329,
            "source_file": "data/player_rankings.csv",
            "player_name": "Yoel Lago",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Enzo Leopold",
                  "ranking": 4688
                },
                {
                  "player_name": "Yannik Engelhardt",
                  "ranking": 4689
                },
                {
                  "player_name": "Adam Daghim",
                  "ranking": 4690
                },
                {
                  "player_name": "Badredine Bouanani",
                  "ranking": 4691
                },
                {
                  "player_name": "Aljoscha Kemlein",
                  "ranking": 4692
                }
              ],
              "lower": [
                {
                  "player_name": "Joel Latibeaudiere",
                  "ranking": 4694
                },
                {
                  "player_name": "Mats Rots",
                  "ranking": 4695
                },
                {
                  "player_name": "Ellis Simms",
                  "ranking": 4696
                },
                {
                  "player_name": "Oscar Højlund",
                  "ranking": 4697
                },
                {
                  "player_name": "Yannick Gerhardt",
                  "ranking": 4698
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.785,
          "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.785,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9989,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 4.0,
              "starts": 3.0,
              "minutes": 315.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.2333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 20 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Celta Vigo, rel: 0.23, 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.1835,
                "tackles": 1.4207,
                "tackles_won": 0.7902,
                "clearances": 5.2821,
                "aerial_won": 1.715,
                "total_shots": 0.3633,
                "rating": 6.8329,
                "minutes": 89.21,
                "total_pass": 51.1305,
                "accurate_pass": 48.0096,
                "duels_won": 3.5919,
                "total_long_balls": 2.8894,
                "accurate_long_balls": 1.3742,
                "total_own_half_passes": 33.9256,
                "accurate_own_half_passes": 32.7618,
                "total_opp_half_passes": 17.205,
                "accurate_opp_half_passes": 15.2478,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.9804,
                "possession_lost": 3.6845,
                "dispossessed": 0.1341,
                "duels_lost": 3.9199,
                "aerial_lost": 1.4815,
                "total_contest": 0.0671,
                "won_contest": 0.0671,
                "ball_recovery": 3.3939,
                "challenges_lost": 0.1501,
                "fouls": 2.1543,
                "fouls_drawn": 1.0664,
                "blocks": 1.0293,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0136,
                "expected_assists": 0.0116,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.8738,
                "total_progression": 63.9312,
                "progressive_carries": 0.5081,
                "key_pass": 0.1333,
                "shots_off_target": 0.3633
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.156,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1326,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1127,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-07",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0958,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-03",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0815,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0692,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0589,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.05,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0425,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0361,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.6556,
                  "aerialWon": 0.8134,
                  "totalClearance_p90": 5.8735,
                  "totalTackle": 1.5878,
                  "defensive_actions": 3.2735
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.183542251586914,
                    "model_output": 1.1835,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1169
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.097
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0406
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0395
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0214
                        }
                      ],
                      "others": 0.0072,
                      "total": 1.1835,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127305
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.094627
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.037105
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.03479
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.018379
                        }
                      ],
                      "others_margin": 0.006114
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.4207470417022705,
                    "model_output": 1.4207,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1708
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0913
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0588
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.059
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0573
                        }
                      ],
                      "others": -0.2254,
                      "total": 1.4207,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.115772
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.060244
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.039166
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.037813
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.035428
                        }
                      ],
                      "others_margin": -0.147139
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7901836037635803,
                    "model_output": 0.7902,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1047
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0545
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0509
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0431
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.041
                        }
                      ],
                      "others": -0.1474,
                      "total": 0.7902,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.11566
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.058567
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.057946
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.049244
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.04474
                        }
                      ],
                      "others_margin": -0.170993
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.282093524932861,
                    "model_output": 5.2821,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.7174
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5558
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3752
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2892
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.2342
                        }
                      ],
                      "others": -0.3224,
                      "total": 5.2821,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.189792
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125673
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.076701
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.055358
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.042688
                        }
                      ],
                      "others_margin": -0.059246
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.714961051940918,
                    "model_output": 1.715,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.2356
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1632
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.135
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1139
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0793
                        }
                      ],
                      "others": 0.0819,
                      "total": 1.715,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.187639
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.133579
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.09843
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.07615
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.049754
                        }
                      ],
                      "others_margin": 0.048981
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.36332324147224426,
                    "model_output": 0.3633,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1143
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0484
                        },
                        {
                          "name": "rating",
                          "contribution": 0.023
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.022
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0084
                        }
                      ],
                      "others": -0.0379,
                      "total": 0.3633,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.114272
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.048414
                        },
                        {
                          "name": "rating",
                          "margin": 0.022972
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.021994
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.008356
                        }
                      ],
                      "others_margin": -0.037941
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.832885265350342,
                    "model_output": 6.8329,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": 0.0222
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0216
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0173
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0127
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0126
                        }
                      ],
                      "others": -0.013,
                      "total": 6.8329,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": 0.022196
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.021613
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.017275
                        },
                        {
                          "name": "rating",
                          "margin": 0.012656
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.01265
                        }
                      ],
                      "others_margin": -0.012905
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 20,
                  "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 0.9989, quality 0.487)",
              "stats": {
                "interceptions": 1.1822,
                "tackles": 1.4192,
                "tackles_won": 0.7893,
                "clearances": 5.2763,
                "aerial_won": 1.7131,
                "total_shots": 0.3629,
                "rating": 6.8329,
                "minutes": 89.21,
                "total_pass": 51.0743,
                "accurate_pass": 47.9568,
                "duels_won": 3.5879,
                "total_long_balls": 2.8862,
                "accurate_long_balls": 1.3727,
                "total_own_half_passes": 33.8883,
                "accurate_own_half_passes": 32.7258,
                "total_opp_half_passes": 17.1861,
                "accurate_opp_half_passes": 15.231,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.9078,
                "possession_lost": 3.6804,
                "dispossessed": 0.134,
                "duels_lost": 3.9156,
                "aerial_lost": 1.4799,
                "total_contest": 0.067,
                "won_contest": 0.067,
                "ball_recovery": 3.3902,
                "challenges_lost": 0.1499,
                "fouls": 2.1519,
                "fouls_drawn": 1.0652,
                "blocks": 1.0282,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0136,
                "expected_assists": 0.0116,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.8563,
                "total_progression": 63.8609,
                "progressive_carries": 0.5075,
                "key_pass": 0.1332,
                "shots_off_target": 0.3629
              },
              "params": {
                "market_value_eur": 7000000,
                "quality_factor": 0.4866,
                "boost_factor": 0.9989,
                "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.0303)",
              "stats": {
                "interceptions": 1.1893,
                "tackles": 1.4192,
                "tackles_won": 0.7825,
                "clearances": 5.2763,
                "aerial_won": 1.7131,
                "total_shots": 0.3519,
                "rating": 6.8329,
                "minutes": 89.21,
                "total_pass": 51.0743,
                "accurate_pass": 47.9568,
                "duels_won": 3.5879,
                "total_long_balls": 2.8862,
                "accurate_long_balls": 1.3727,
                "total_own_half_passes": 33.8883,
                "accurate_own_half_passes": 32.7258,
                "total_opp_half_passes": 17.1861,
                "accurate_opp_half_passes": 15.231,
                "crosses_total": 0.0086,
                "crosses_accurate": 0.0,
                "touches": 65.9078,
                "possession_lost": 3.6804,
                "dispossessed": 0.134,
                "duels_lost": 3.9156,
                "aerial_lost": 1.4799,
                "total_contest": 0.067,
                "won_contest": 0.067,
                "ball_recovery": 3.3902,
                "challenges_lost": 0.1499,
                "fouls": 2.1382,
                "fouls_drawn": 1.0673,
                "blocks": 1.0282,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0136,
                "expected_assists": 0.0116,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.8563,
                "total_progression": 63.8609,
                "progressive_carries": 0.5075,
                "key_pass": 0.1332,
                "shots_off_target": 0.3629
              },
              "params": {
                "blend_weight": 0.0303,
                "history_matches": 20,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9912,
                "prior_reliability": 0.2333,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 2.1519,
                  "after": 2.1382
                },
                {
                  "stat": "totalShots",
                  "before": 0.3629,
                  "after": 0.3519
                },
                {
                  "stat": "totalCross",
                  "before": 0.0,
                  "after": 0.0086
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.1822,
                  "after": 1.1893
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7893,
                  "after": 0.7825
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1893,
                "tackles": 1.4192,
                "tackles_won": 0.7825,
                "clearances": 5.2763,
                "aerial_won": 1.7131,
                "total_shots": 0.3629,
                "rating": 6.8329,
                "minutes": 89.21,
                "total_pass": 51.0743,
                "accurate_pass": 47.9568,
                "duels_won": 3.5879,
                "total_long_balls": 2.8862,
                "accurate_long_balls": 1.3727,
                "total_own_half_passes": 33.8883,
                "accurate_own_half_passes": 32.7258,
                "total_opp_half_passes": 17.1861,
                "accurate_opp_half_passes": 15.231,
                "crosses_total": 0.0086,
                "crosses_accurate": 0.0,
                "touches": 65.9078,
                "possession_lost": 3.6804,
                "dispossessed": 0.134,
                "duels_lost": 3.9156,
                "aerial_lost": 1.4799,
                "total_contest": 0.067,
                "won_contest": 0.067,
                "ball_recovery": 3.3902,
                "challenges_lost": 0.1499,
                "fouls": 2.1382,
                "fouls_drawn": 1.0673,
                "blocks": 1.0282,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0136,
                "expected_assists": 0.0116,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.8563,
                "total_progression": 63.8609,
                "progressive_carries": 0.5075,
                "key_pass": 0.1332,
                "shots_off_target": 0.3629
              },
              "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.1893,
                "tackles": 1.4192,
                "tackles_won": 0.7825,
                "clearances": 5.2763,
                "aerial_won": 1.7131,
                "total_shots": 0.3629,
                "rating": 6.8329,
                "minutes": 89.21,
                "total_pass": 51.0743,
                "accurate_pass": 47.9568,
                "duels_won": 3.5879,
                "total_long_balls": 2.8862,
                "accurate_long_balls": 1.3727,
                "total_own_half_passes": 33.8883,
                "accurate_own_half_passes": 32.7258,
                "total_opp_half_passes": 17.1861,
                "accurate_opp_half_passes": 15.231,
                "crosses_total": 0.0086,
                "crosses_accurate": 0.0,
                "touches": 65.9078,
                "possession_lost": 3.6804,
                "dispossessed": 0.134,
                "duels_lost": 3.9156,
                "aerial_lost": 1.4799,
                "total_contest": 0.067,
                "won_contest": 0.067,
                "ball_recovery": 3.3902,
                "challenges_lost": 0.1499,
                "fouls": 2.1382,
                "fouls_drawn": 1.0673,
                "blocks": 1.0282,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0136,
                "expected_assists": 0.0116,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.8563,
                "total_progression": 63.8609,
                "progressive_carries": 0.5075,
                "key_pass": 0.1332,
                "shots_off_target": 0.3629,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.655,
                "opponent_faced": "Jonny Otto",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jonny Otto",
                  "matchup_zone": "LWB vs CB"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1893,
                "tackles": 1.4192,
                "tackles_won": 0.7825,
                "clearances": 5.2763,
                "aerial_won": 1.7131,
                "total_shots": 0.3629,
                "rating": 6.8329,
                "minutes": 89.21,
                "total_pass": 51.0743,
                "accurate_pass": 47.9568,
                "duels_won": 3.5879,
                "total_long_balls": 2.8862,
                "accurate_long_balls": 1.3727,
                "total_own_half_passes": 33.8883,
                "accurate_own_half_passes": 32.7258,
                "total_opp_half_passes": 17.1861,
                "accurate_opp_half_passes": 15.231,
                "crosses_total": 0.0086,
                "crosses_accurate": 0.0,
                "touches": 65.9078,
                "possession_lost": 3.6804,
                "dispossessed": 0.134,
                "duels_lost": 3.9156,
                "aerial_lost": 1.4799,
                "total_contest": 0.067,
                "won_contest": 0.067,
                "ball_recovery": 3.3902,
                "challenges_lost": 0.1499,
                "fouls": 2.1382,
                "fouls_drawn": 1.0673,
                "blocks": 1.0282,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0136,
                "expected_assists": 0.0116,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.8563,
                "total_progression": 63.8609,
                "progressive_carries": 0.5075,
                "key_pass": 0.1332,
                "shots_off_target": 0.3629,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.655,
                "opponent_faced": "Jonny Otto",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "interceptions": 1.1893,
                "tackles": 1.4192,
                "tackles_won": 0.7825,
                "clearances": 5.2763,
                "aerial_won": 1.7131,
                "total_shots": 0.3629,
                "rating": 6.8329,
                "minutes": 89.21,
                "total_pass": 51.0743,
                "accurate_pass": 47.9568,
                "duels_won": 3.5879,
                "total_long_balls": 2.8862,
                "accurate_long_balls": 1.3727,
                "total_own_half_passes": 33.8883,
                "accurate_own_half_passes": 32.7258,
                "total_opp_half_passes": 17.1861,
                "accurate_opp_half_passes": 15.231,
                "crosses_total": 0.0086,
                "crosses_accurate": 0.0,
                "touches": 65.9078,
                "possession_lost": 3.6804,
                "dispossessed": 0.134,
                "duels_lost": 3.9156,
                "aerial_lost": 1.4799,
                "total_contest": 0.067,
                "won_contest": 0.067,
                "ball_recovery": 3.3902,
                "challenges_lost": 0.1499,
                "fouls": 2.1382,
                "fouls_drawn": 1.0673,
                "blocks": 1.0282,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0152,
                "expected_assists": 0.013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.8563,
                "total_progression": 63.8609,
                "progressive_carries": 0.5075,
                "key_pass": 0.1332,
                "shots_off_target": 0.3629,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.655,
                "opponent_faced": "Jonny Otto",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8117
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 71.0)",
              "stats": {
                "interceptions": 1.1893,
                "tackles": 1.4192,
                "tackles_won": 0.7825,
                "clearances": 5.2763,
                "aerial_won": 1.7131,
                "total_shots": 0.3629,
                "rating": 6.8329,
                "minutes": 89.21,
                "total_pass": 51.0743,
                "accurate_pass": 47.9568,
                "duels_won": 3.5879,
                "total_long_balls": 2.8862,
                "accurate_long_balls": 1.3727,
                "total_own_half_passes": 33.8883,
                "accurate_own_half_passes": 32.7258,
                "total_opp_half_passes": 17.1861,
                "accurate_opp_half_passes": 15.231,
                "crosses_total": 0.0086,
                "crosses_accurate": 0.0,
                "touches": 65.9078,
                "possession_lost": 3.6804,
                "dispossessed": 0.134,
                "duels_lost": 3.9156,
                "aerial_lost": 1.4799,
                "total_contest": 0.067,
                "won_contest": 0.067,
                "ball_recovery": 3.3902,
                "challenges_lost": 0.1499,
                "fouls": 2.1382,
                "fouls_drawn": 1.0673,
                "blocks": 1.0282,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0152,
                "expected_assists": 0.013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.8563,
                "total_progression": 63.8609,
                "progressive_carries": 0.5075,
                "key_pass": 0.1332,
                "shots_off_target": 0.3629,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.655,
                "opponent_faced": "Jonny Otto",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8117,
                "fifa_overall": 71.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": 4693,
                "fifa_rank": 5023.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1.1893,
                "tackles": 1.4192,
                "tackles_won": 0.7825,
                "clearances": 5.2763,
                "aerial_won": 1.7131,
                "total_shots": 0.3629,
                "rating": 6.8329,
                "minutes": 89.21,
                "total_pass": 51.0743,
                "accurate_pass": 47.9568,
                "duels_won": 3.5879,
                "total_long_balls": 2.8862,
                "accurate_long_balls": 1.3727,
                "total_own_half_passes": 33.8883,
                "accurate_own_half_passes": 32.7258,
                "total_opp_half_passes": 17.1861,
                "accurate_opp_half_passes": 15.231,
                "crosses_total": 0.0086,
                "crosses_accurate": 0.0,
                "touches": 65.9078,
                "possession_lost": 3.6804,
                "dispossessed": 0.134,
                "duels_lost": 3.9156,
                "aerial_lost": 1.4799,
                "total_contest": 0.067,
                "won_contest": 0.067,
                "ball_recovery": 3.3902,
                "challenges_lost": 0.1499,
                "fouls": 2.1382,
                "fouls_drawn": 1.0673,
                "blocks": 1.0282,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0152,
                "expected_assists": 0.013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.8563,
                "total_progression": 63.8609,
                "progressive_carries": 0.5075,
                "key_pass": 0.1332,
                "shots_off_target": 0.3629,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.655,
                "opponent_faced": "Jonny Otto",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0151,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8117,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0151,
                "goal_rate": 0.0,
                "scorer_weight": 0.0122,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0133,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.1893,
                "tackles": 1.4192,
                "tackles_won": 0.7825,
                "clearances": 5.2763,
                "aerial_won": 1.7131,
                "total_shots": 0.3629,
                "rating": 6.8329,
                "minutes": 89.21,
                "total_pass": 51.0743,
                "accurate_pass": 47.9568,
                "duels_won": 3.5879,
                "total_long_balls": 2.8862,
                "accurate_long_balls": 1.3727,
                "total_own_half_passes": 33.8883,
                "accurate_own_half_passes": 32.7258,
                "total_opp_half_passes": 17.1861,
                "accurate_opp_half_passes": 15.231,
                "crosses_total": 0.0086,
                "crosses_accurate": 0.0,
                "touches": 65.9078,
                "possession_lost": 3.6804,
                "dispossessed": 0.134,
                "duels_lost": 3.9156,
                "aerial_lost": 1.4799,
                "total_contest": 0.067,
                "won_contest": 0.067,
                "ball_recovery": 3.3902,
                "challenges_lost": 0.1499,
                "fouls": 2.1382,
                "fouls_drawn": 1.0673,
                "blocks": 1.0282,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0152,
                "expected_assists": 0.013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.8563,
                "total_progression": 63.8609,
                "progressive_carries": 0.5075,
                "key_pass": 0.1332,
                "shots_off_target": 0.3629,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.655,
                "opponent_faced": "Jonny Otto",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0151,
                "projected_assists": 0,
                "assist_probability": 0.0129,
                "finishing_factor": 0.8,
                "creation_factor": 0.8117,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0129,
                "assist_rate": 0.0,
                "provider_weight": 0.0106,
                "squad_weight_total": 0.6035,
                "weight_share": 0.0175,
                "creation_factor": 0.8117,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12
              }
            }
          ]
        },
        "Sebastián Cáceres": {
          "player_id": 924889,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 21,
          "height": 183,
          "market_value": 4099999,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 6.8202,
            "minutes": 90,
            "total_pass": 56,
            "accurate_pass": 49,
            "duels_won": 6,
            "total_long_balls": 4,
            "accurate_long_balls": 1,
            "total_own_half_passes": 32,
            "accurate_own_half_passes": 30,
            "total_opp_half_passes": 24,
            "accurate_opp_half_passes": 20,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 66,
            "possession_lost": 7.2928,
            "dispossessed": 0.4542,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 2,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0134,
            "expected_assists": 0.013,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 20,
            "total_progression": 59,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 1,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.815,
            "opponent_faced": "Lucas Boyé",
            "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.0133,
            "projected_assists": 0,
            "assist_probability": 0.0129,
            "finishing_factor": 0.8065,
            "creation_factor": 0.8117,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0051,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 41,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 1,
                "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": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0263,
                "expected_assists": 0.0196,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 67,
                "accurate_pass": 60,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 4,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3519,
            "combined_rank_score": 1493.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 499.0,
            "sofascore_rating": 6.86,
            "sofascore_appearances": 5.0,
            "fifa_rank": 2487.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8202,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sebastián Cáceres",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Grischa Prömel",
                  "ranking": 3514
                },
                {
                  "player_name": "Pol Lozano",
                  "ranking": 3515
                },
                {
                  "player_name": "Aurèle Amenda",
                  "ranking": 3516
                },
                {
                  "player_name": "Manu Morlanes",
                  "ranking": 3517
                },
                {
                  "player_name": "Alexis Claude-Maurice",
                  "ranking": 3518
                }
              ],
              "lower": [
                {
                  "player_name": "Anthony Caci",
                  "ranking": 3520
                },
                {
                  "player_name": "Amar Memić",
                  "ranking": 3521
                },
                {
                  "player_name": "Miro Muheim",
                  "ranking": 3522
                },
                {
                  "player_name": "Aarón Martín",
                  "ranking": 3523
                },
                {
                  "player_name": "Robin Hack",
                  "ranking": 3524
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2,
          "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": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9884,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 2 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.0954,
                "tackles": 1.9012,
                "tackles_won": 1.0457,
                "clearances": 3.5085,
                "aerial_won": 1.569,
                "total_shots": 0.566,
                "rating": 6.8202,
                "minutes": 90.0,
                "total_pass": 56.1892,
                "accurate_pass": 49.7297,
                "duels_won": 6.0,
                "total_long_balls": 4.4595,
                "accurate_long_balls": 1.4595,
                "total_own_half_passes": 32.0811,
                "accurate_own_half_passes": 30.0,
                "total_opp_half_passes": 24.1081,
                "accurate_opp_half_passes": 19.7297,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 66.7297,
                "possession_lost": 7.3784,
                "dispossessed": 0.4595,
                "duels_lost": 2.8378,
                "aerial_lost": 0.9189,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.3784,
                "challenges_lost": 1.0,
                "fouls": 0.4595,
                "fouls_drawn": 1.5405,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0121,
                "expected_assists": 0.0117,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 20.2973,
                "total_progression": 59.8421,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.566
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.5405,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.4595,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.0,
                  "aerialWon": 2.3784,
                  "totalClearance_p90": 3.0,
                  "totalTackle": 2.0811,
                  "defensive_actions": 3.1622
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0954090356826782,
                    "model_output": 1.0954,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0991
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0447
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0185
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0143
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0125
                        }
                      ],
                      "others": 0.0704,
                      "total": 1.0954,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.108964
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.045511
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.018269
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.013843
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.012111
                        }
                      ],
                      "others_margin": 0.066459
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.9011814594268799,
                    "model_output": 1.9012,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1995
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.1054
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0901
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0807
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0732
                        }
                      ],
                      "others": -0.0392,
                      "total": 1.9012,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.133965
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.064151
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.051766
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.044161
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.038473
                        }
                      ],
                      "others_margin": -0.020427
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.045724630355835,
                    "model_output": 1.0457,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1302
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0701
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0593
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0547
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0476
                        }
                      ],
                      "others": -0.0752,
                      "total": 1.0457,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.141894
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.068802
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.054696
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.04791
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.04157
                        }
                      ],
                      "others_margin": -0.069393
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.5084502696990967,
                    "model_output": 3.5085,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4551
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2798
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.2358
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.1736
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1643
                        }
                      ],
                      "others": 0.1456,
                      "total": 3.5085,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124503
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.074676
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.067583
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.052857
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.05009
                        }
                      ],
                      "others_margin": 0.042341
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.5690120458602905,
                    "model_output": 1.569,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.3204
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.199
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.1548
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1391
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0571
                        }
                      ],
                      "others": 0.0233,
                      "total": 1.569,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.209174
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.110848
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.085148
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.083235
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.036276
                        }
                      ],
                      "others_margin": 0.014949
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5659679770469666,
                    "model_output": 0.566,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0578
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0417
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0263
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0198
                        },
                        {
                          "name": "history_matches",
                          "contribution": -0.0178
                        }
                      ],
                      "others": -0.0363,
                      "total": 0.566,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.057771
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.041652
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.026256
                        },
                        {
                          "name": "rating",
                          "margin": 0.019828
                        },
                        {
                          "name": "history_matches",
                          "margin": -0.017764
                        }
                      ],
                      "others_margin": -0.036276
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.820199966430664,
                    "model_output": 6.8202,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0355
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0248
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0119
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0106
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": -0.009
                        }
                      ],
                      "others": -0.0171,
                      "total": 6.8202,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.035548
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.024819
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.011853
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.010601
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": -0.008998
                        }
                      ],
                      "others_margin": -0.017123
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 2,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9884, quality 0.451)",
              "stats": {
                "interceptions": 1.0827,
                "tackles": 1.8791,
                "tackles_won": 1.0336,
                "clearances": 3.4678,
                "aerial_won": 1.5508,
                "total_shots": 0.5594,
                "rating": 6.8202,
                "minutes": 90.0,
                "total_pass": 55.5374,
                "accurate_pass": 49.1528,
                "duels_won": 5.9304,
                "total_long_balls": 4.4078,
                "accurate_long_balls": 1.4426,
                "total_own_half_passes": 31.709,
                "accurate_own_half_passes": 29.652,
                "total_opp_half_passes": 23.8284,
                "accurate_opp_half_passes": 19.5008,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.9556,
                "possession_lost": 7.2928,
                "dispossessed": 0.4542,
                "duels_lost": 2.8049,
                "aerial_lost": 0.9082,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.3392,
                "challenges_lost": 0.9884,
                "fouls": 0.4542,
                "fouls_drawn": 1.5226,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.012,
                "expected_assists": 0.0116,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 20.0619,
                "total_progression": 59.1479,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.5594
              },
              "params": {
                "market_value_eur": 4099999,
                "quality_factor": 0.4511,
                "boost_factor": 0.9884,
                "reference_quality": 0.505,
                "history_matches": 2,
                "history_shrink": 0.7143,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0827,
                "tackles": 1.8791,
                "tackles_won": 1.0336,
                "clearances": 3.4678,
                "aerial_won": 1.5508,
                "total_shots": 0.5594,
                "rating": 6.8202,
                "minutes": 90.0,
                "total_pass": 55.5374,
                "accurate_pass": 49.1528,
                "duels_won": 5.9304,
                "total_long_balls": 4.4078,
                "accurate_long_balls": 1.4426,
                "total_own_half_passes": 31.709,
                "accurate_own_half_passes": 29.652,
                "total_opp_half_passes": 23.8284,
                "accurate_opp_half_passes": 19.5008,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.9556,
                "possession_lost": 7.2928,
                "dispossessed": 0.4542,
                "duels_lost": 2.8049,
                "aerial_lost": 0.9082,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.3392,
                "challenges_lost": 0.9884,
                "fouls": 0.4542,
                "fouls_drawn": 1.5226,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.012,
                "expected_assists": 0.0116,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 20.0619,
                "total_progression": 59.1479,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.5594
              },
              "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.0827,
                "tackles": 1.8791,
                "tackles_won": 1.0336,
                "clearances": 3.4678,
                "aerial_won": 1.5508,
                "total_shots": 0.5594,
                "rating": 6.8202,
                "minutes": 90.0,
                "total_pass": 55.5374,
                "accurate_pass": 49.1528,
                "duels_won": 5.9304,
                "total_long_balls": 4.4078,
                "accurate_long_balls": 1.4426,
                "total_own_half_passes": 31.709,
                "accurate_own_half_passes": 29.652,
                "total_opp_half_passes": 23.8284,
                "accurate_opp_half_passes": 19.5008,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.9556,
                "possession_lost": 7.2928,
                "dispossessed": 0.4542,
                "duels_lost": 2.8049,
                "aerial_lost": 0.9082,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.3392,
                "challenges_lost": 0.9884,
                "fouls": 0.4542,
                "fouls_drawn": 1.5226,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.012,
                "expected_assists": 0.0116,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 20.0619,
                "total_progression": 59.1479,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.5594,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.815,
                "opponent_faced": "Lucas Boyé",
                "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": "Lucas Boyé",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.0827,
                "tackles": 1.8791,
                "tackles_won": 1.0336,
                "clearances": 3.4678,
                "aerial_won": 1.5508,
                "total_shots": 0.5594,
                "rating": 6.8202,
                "minutes": 90.0,
                "total_pass": 55.5374,
                "accurate_pass": 49.1528,
                "duels_won": 5.9304,
                "total_long_balls": 4.4078,
                "accurate_long_balls": 1.4426,
                "total_own_half_passes": 31.709,
                "accurate_own_half_passes": 29.652,
                "total_opp_half_passes": 23.8284,
                "accurate_opp_half_passes": 19.5008,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.9556,
                "possession_lost": 7.2928,
                "dispossessed": 0.4542,
                "duels_lost": 2.8049,
                "aerial_lost": 0.9082,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.3392,
                "challenges_lost": 0.9884,
                "fouls": 0.4542,
                "fouls_drawn": 1.5226,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.012,
                "expected_assists": 0.0116,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 20.0619,
                "total_progression": 59.1479,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.5594,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.815,
                "opponent_faced": "Lucas Boyé",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "interceptions": 1.0827,
                "tackles": 1.8791,
                "tackles_won": 1.0336,
                "clearances": 3.4678,
                "aerial_won": 1.5508,
                "total_shots": 0.5594,
                "rating": 6.8202,
                "minutes": 90.0,
                "total_pass": 55.5374,
                "accurate_pass": 49.1528,
                "duels_won": 5.9304,
                "total_long_balls": 4.4078,
                "accurate_long_balls": 1.4426,
                "total_own_half_passes": 31.709,
                "accurate_own_half_passes": 29.652,
                "total_opp_half_passes": 23.8284,
                "accurate_opp_half_passes": 19.5008,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.9556,
                "possession_lost": 7.2928,
                "dispossessed": 0.4542,
                "duels_lost": 2.8049,
                "aerial_lost": 0.9082,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.3392,
                "challenges_lost": 0.9884,
                "fouls": 0.4542,
                "fouls_drawn": 1.5226,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0134,
                "expected_assists": 0.013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 20.0619,
                "total_progression": 59.1479,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.5594,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.815,
                "opponent_faced": "Lucas Boyé",
                "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.8065,
                "creation_factor": 0.8117
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 75.0)",
              "stats": {
                "interceptions": 1.0827,
                "tackles": 1.8791,
                "tackles_won": 1.0336,
                "clearances": 3.4678,
                "aerial_won": 1.5508,
                "total_shots": 0.5594,
                "rating": 6.8202,
                "minutes": 90.0,
                "total_pass": 55.5374,
                "accurate_pass": 49.1528,
                "duels_won": 5.9304,
                "total_long_balls": 4.4078,
                "accurate_long_balls": 1.4426,
                "total_own_half_passes": 31.709,
                "accurate_own_half_passes": 29.652,
                "total_opp_half_passes": 23.8284,
                "accurate_opp_half_passes": 19.5008,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.9556,
                "possession_lost": 7.2928,
                "dispossessed": 0.4542,
                "duels_lost": 2.8049,
                "aerial_lost": 0.9082,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.3392,
                "challenges_lost": 0.9884,
                "fouls": 0.4542,
                "fouls_drawn": 1.5226,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0134,
                "expected_assists": 0.013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 20.0619,
                "total_progression": 59.1479,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.5594,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.815,
                "opponent_faced": "Lucas Boyé",
                "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.8065,
                "creation_factor": 0.8117,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3519,
                "fifa_rank": 2487.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1.0827,
                "tackles": 1.8791,
                "tackles_won": 1.0336,
                "clearances": 3.4678,
                "aerial_won": 1.5508,
                "total_shots": 0.5594,
                "rating": 6.8202,
                "minutes": 90.0,
                "total_pass": 55.5374,
                "accurate_pass": 49.1528,
                "duels_won": 5.9304,
                "total_long_balls": 4.4078,
                "accurate_long_balls": 1.4426,
                "total_own_half_passes": 31.709,
                "accurate_own_half_passes": 29.652,
                "total_opp_half_passes": 23.8284,
                "accurate_opp_half_passes": 19.5008,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.9556,
                "possession_lost": 7.2928,
                "dispossessed": 0.4542,
                "duels_lost": 2.8049,
                "aerial_lost": 0.9082,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.3392,
                "challenges_lost": 0.9884,
                "fouls": 0.4542,
                "fouls_drawn": 1.5226,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0134,
                "expected_assists": 0.013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 20.0619,
                "total_progression": 59.1479,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.5594,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.815,
                "opponent_faced": "Lucas Boyé",
                "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.0133,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8065,
                "creation_factor": 0.8117,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0133,
                "goal_rate": 0.0,
                "scorer_weight": 0.0108,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0118,
                "finishing_factor": 0.8065,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.0827,
                "tackles": 1.8791,
                "tackles_won": 1.0336,
                "clearances": 3.4678,
                "aerial_won": 1.5508,
                "total_shots": 0.5594,
                "rating": 6.8202,
                "minutes": 90.0,
                "total_pass": 55.5374,
                "accurate_pass": 49.1528,
                "duels_won": 5.9304,
                "total_long_balls": 4.4078,
                "accurate_long_balls": 1.4426,
                "total_own_half_passes": 31.709,
                "accurate_own_half_passes": 29.652,
                "total_opp_half_passes": 23.8284,
                "accurate_opp_half_passes": 19.5008,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.9556,
                "possession_lost": 7.2928,
                "dispossessed": 0.4542,
                "duels_lost": 2.8049,
                "aerial_lost": 0.9082,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.3392,
                "challenges_lost": 0.9884,
                "fouls": 0.4542,
                "fouls_drawn": 1.5226,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0134,
                "expected_assists": 0.013,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 20.0619,
                "total_progression": 59.1479,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.5594,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.815,
                "opponent_faced": "Lucas Boyé",
                "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.0133,
                "projected_assists": 0,
                "assist_probability": 0.0129,
                "finishing_factor": 0.8065,
                "creation_factor": 0.8117,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0129,
                "assist_rate": 0.0,
                "provider_weight": 0.0106,
                "squad_weight_total": 0.6035,
                "weight_share": 0.0175,
                "creation_factor": 0.8117,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12
              }
            }
          ]
        },
        "Ionuț Radu": {
          "player_id": 815202,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 13,
          "height": 188,
          "market_value": 9700000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.0604,
            "rating": 6.9357,
            "minutes": 90,
            "total_pass": 29,
            "accurate_pass": 21,
            "total_long_balls": 12,
            "accurate_long_balls": 4,
            "touches": 40,
            "clearances": 1,
            "ball_recovery": 10,
            "high_claims": 1,
            "punches": 0.8075,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 8.0828,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 19,
            "accurate_own_half_passes": 18,
            "gk_engine_opponent_lambda": 0.8739,
            "shots_faced": 8.1,
            "expected_saves": 1.99,
            "high_pressure_saves": 0.68,
            "opponent_faced": "Toni Martínez, Lucas Boyé",
            "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": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16421058,
              "match_date": "2026-10-11",
              "home_team": "Elche",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 15,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 9,
                "saves": 2,
                "goals_prevented": 0.4156
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0036,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 25,
                "duels_won": 1,
                "ball_recovery": 12,
                "saves": 5,
                "goals_prevented": 0.2452
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0035,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 15,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 6,
                "saves": 1,
                "goals_prevented": -0.3323
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416348,
              "match_date": "2026-09-07",
              "home_team": "Getafe",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 21,
                "clearances": 1,
                "ball_recovery": 12,
                "saves": 1,
                "goals_prevented": -0.0814
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416340,
              "match_date": "2026-09-03",
              "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": 8.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 20,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 10,
                "saves": 5,
                "goals_prevented": 1.0407
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 8.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.002,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 38,
                "clearances": 3,
                "ball_recovery": 14,
                "saves": 5,
                "goals_prevented": 0.8261
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0052,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 27,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 10,
                "saves": 2,
                "goals_prevented": -0.6642
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 15,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 7,
                "saves": 2,
                "goals_prevented": 0.1435
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 26,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 10,
                "saves": 2,
                "goals_prevented": 0.404
              },
              "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": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 15,
                "clearances": 1,
                "ball_recovery": 26,
                "saves": 8,
                "goals_prevented": 0.7293
              },
              "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": 1679,
            "combined_rank_score": 681.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 129.0,
            "sofascore_rating": 7.375,
            "sofascore_appearances": 4.0,
            "fifa_rank": 1234.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": 6.9357,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ionuț Radu",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jonathan Burkardt",
                  "ranking": 1674
                },
                {
                  "player_name": "Reinildo",
                  "ranking": 1675
                },
                {
                  "player_name": "Lucas Hernández",
                  "ranking": 1676
                },
                {
                  "player_name": "Davide Zappacosta",
                  "ranking": 1677
                },
                {
                  "player_name": "Vicente Fernández",
                  "ranking": 1678
                }
              ],
              "lower": [
                {
                  "player_name": "Beom-su Lee",
                  "ranking": 1680
                },
                {
                  "player_name": "Hyeon-oh Kim",
                  "ranking": 1681
                },
                {
                  "player_name": "Osvaldo Bosso",
                  "ranking": 1682
                },
                {
                  "player_name": "Guillermo Pacheco",
                  "ranking": 1683
                },
                {
                  "player_name": "Jovany Campusano",
                  "ranking": 1684
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.79,
          "history_matches": 46,
          "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": 46,
            "data_confidence": 0.79,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0004,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 4.0,
              "starts": 4.0,
              "minutes": 360.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.2667
            },
            "rationale": "XGBoost regressor (G_service) evaluated 46 historical appearances across 3 target models; FBref 2026-2027 prior blended (La Liga, Celta Vigo, rel: 0.27, 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.8809,
                "goals_prevented": -0.0604,
                "rating": 6.9357,
                "minutes": 90.0,
                "total_pass": 28.9281,
                "accurate_pass": 20.8964,
                "total_long_balls": 11.8163,
                "accurate_long_balls": 3.8477,
                "touches": 39.9488,
                "clearances": 1.2854,
                "ball_recovery": 10.3678,
                "high_claims": 0.7817,
                "punches": 0.8072,
                "aerial_won": 0.0585,
                "sweeper_actions": 0.7263,
                "sweeper_accurate": 0.7263,
                "saves_inside_box": 1.5228,
                "possession_lost": 8.0796,
                "duels_won": 0.6319,
                "duels_lost": 0.0001,
                "total_contest": 0.1872,
                "won_contest": 0.1872,
                "fouls": 0.0,
                "fouls_drawn": 0.2438,
                "total_own_half_passes": 18.7281,
                "accurate_own_half_passes": 18.0506
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-18T10:04:16.386956+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 200,
                    "rows": 7041
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-07",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-03",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0783,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "accurateLongBalls": 3.8476,
                  "save_contribution": 3.1295,
                  "distribution_accuracy": 0.9635,
                  "accurateOwnHalfPasses": 18.0506,
                  "passValueNormalized": 0.0361,
                  "totalOwnHalfPasses": 18.7281
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.880889654159546,
                    "model_output": 2.8809,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "save_contribution",
                        "importance": 0.0393
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.039
                      },
                      {
                        "name": "saves",
                        "importance": 0.0355
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0354
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.941,
                      "items": [
                        {
                          "name": "distribution_accuracy",
                          "contribution": -0.0776
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0615
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0612
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0315
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0304
                        }
                      ],
                      "others": -0.0447,
                      "total": 2.8809,
                      "log_link": true,
                      "margin_base": 1.078763,
                      "item_margins": [
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.02675
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.02126
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.021131
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.01093
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.010436
                        }
                      ],
                      "others_margin": -0.015409
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.060374677181243896,
                    "model_output": -0.0604,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.0405
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.0401
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0394
                      },
                      {
                        "name": "totalOwnHalfPasses",
                        "importance": 0.0381
                      },
                      {
                        "name": "punches",
                        "importance": 0.0363
                      }
                    ],
                    "decomposition": {
                      "base": -0.0281,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.0248
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": -0.0143
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": -0.0131
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0126
                        },
                        {
                          "name": "commanding_index",
                          "contribution": 0.0121
                        }
                      ],
                      "others": -0.0292,
                      "total": -0.0604,
                      "log_link": false,
                      "margin_base": -0.028113,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.02478
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": -0.014295
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": -0.013112
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.012609
                        },
                        {
                          "name": "commanding_index",
                          "margin": 0.01207
                        }
                      ],
                      "others_margin": -0.029096
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.935749053955078,
                    "model_output": 6.9357,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0379
                      },
                      {
                        "name": "commanding_index",
                        "importance": 0.0375
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.037
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0354
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 6.9974,
                      "items": [
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0189
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": -0.0179
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": -0.0177
                        },
                        {
                          "name": "inside_box_save_rate",
                          "contribution": 0.0165
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0142
                        }
                      ],
                      "others": -0.0379,
                      "total": 6.9357,
                      "log_link": false,
                      "margin_base": 6.997403,
                      "item_margins": [
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.018922
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": -0.017921
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.01769
                        },
                        {
                          "name": "inside_box_save_rate",
                          "margin": 0.01649
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.014231
                        }
                      ],
                      "others_margin": -0.037844
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 46,
                  "role_matches": 46,
                  "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.0004, quality 0.519)",
              "stats": {
                "saves": 2.882,
                "goals_prevented": -0.0604,
                "rating": 6.9357,
                "minutes": 90.0,
                "total_pass": 28.9397,
                "accurate_pass": 20.9048,
                "total_long_balls": 11.821,
                "accurate_long_balls": 3.8492,
                "touches": 39.9648,
                "clearances": 1.2859,
                "ball_recovery": 10.3719,
                "high_claims": 0.782,
                "punches": 0.8075,
                "aerial_won": 0.0585,
                "sweeper_actions": 0.7266,
                "sweeper_accurate": 0.7266,
                "saves_inside_box": 1.5234,
                "possession_lost": 8.0828,
                "duels_won": 0.6322,
                "duels_lost": 0.0001,
                "total_contest": 0.1873,
                "won_contest": 0.1873,
                "fouls": 0.0,
                "fouls_drawn": 0.2439,
                "total_own_half_passes": 18.7356,
                "accurate_own_half_passes": 18.0578
              },
              "params": {
                "market_value_eur": 9700000,
                "quality_factor": 0.5189,
                "boost_factor": 1.0004,
                "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.0170)",
              "stats": {
                "saves": 2.8925,
                "goals_prevented": -0.0604,
                "rating": 6.9357,
                "minutes": 90.0,
                "total_pass": 28.9397,
                "accurate_pass": 20.9048,
                "total_long_balls": 11.821,
                "accurate_long_balls": 3.8492,
                "touches": 39.9648,
                "clearances": 1.2859,
                "ball_recovery": 10.3719,
                "high_claims": 0.782,
                "punches": 0.8075,
                "aerial_won": 0.0585,
                "sweeper_actions": 0.7266,
                "sweeper_accurate": 0.7266,
                "saves_inside_box": 1.5234,
                "possession_lost": 8.0828,
                "duels_won": 0.6322,
                "duels_lost": 0.0001,
                "total_contest": 0.1873,
                "won_contest": 0.1873,
                "fouls": 0.0,
                "fouls_drawn": 0.244,
                "total_own_half_passes": 18.7356,
                "accurate_own_half_passes": 18.0578
              },
              "params": {
                "blend_weight": 0.017,
                "history_matches": 46,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.2667,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 2.882,
                  "after": 2.8925
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.8925,
                "goals_prevented": -0.0604,
                "rating": 6.9357,
                "minutes": 90.0,
                "total_pass": 28.9397,
                "accurate_pass": 20.9048,
                "total_long_balls": 11.821,
                "accurate_long_balls": 3.8492,
                "touches": 39.9648,
                "clearances": 1.2859,
                "ball_recovery": 10.3719,
                "high_claims": 0.782,
                "punches": 0.8075,
                "aerial_won": 0.0585,
                "sweeper_actions": 0.7266,
                "sweeper_accurate": 0.7266,
                "saves_inside_box": 1.5234,
                "possession_lost": 8.0828,
                "duels_won": 0.6322,
                "duels_lost": 0.0001,
                "total_contest": 0.1873,
                "won_contest": 0.1873,
                "fouls": 0.0,
                "fouls_drawn": 0.244,
                "total_own_half_passes": 18.7356,
                "accurate_own_half_passes": 18.0578
              },
              "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.8925,
                "goals_prevented": -0.0604,
                "rating": 6.9357,
                "minutes": 90.0,
                "total_pass": 28.9397,
                "accurate_pass": 20.9048,
                "total_long_balls": 11.821,
                "accurate_long_balls": 3.8492,
                "touches": 39.9648,
                "clearances": 1.2859,
                "ball_recovery": 10.3719,
                "high_claims": 0.782,
                "punches": 0.8075,
                "aerial_won": 0.0585,
                "sweeper_actions": 0.7266,
                "sweeper_accurate": 0.7266,
                "saves_inside_box": 1.5234,
                "possession_lost": 8.0828,
                "duels_won": 0.6322,
                "duels_lost": 0.0001,
                "total_contest": 0.1873,
                "won_contest": 0.1873,
                "fouls": 0.0,
                "fouls_drawn": 0.244,
                "total_own_half_passes": 18.7356,
                "accurate_own_half_passes": 18.0578,
                "gk_engine_opponent_lambda": 0.8739,
                "shots_faced": 8.3,
                "expected_saves": 2.03,
                "high_pressure_saves": 0.7,
                "opponent_faced": "Toni Martínez, Lucas Boyé",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Toni Martínez, Lucas Boyé",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 0.8739
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "saves": 2.8925,
                "goals_prevented": -0.0604,
                "rating": 6.9357,
                "minutes": 90.0,
                "total_pass": 28.9397,
                "accurate_pass": 20.9048,
                "total_long_balls": 11.821,
                "accurate_long_balls": 3.8492,
                "touches": 39.9648,
                "clearances": 1.2859,
                "ball_recovery": 10.3719,
                "high_claims": 0.782,
                "punches": 0.8075,
                "aerial_won": 0.0585,
                "sweeper_actions": 0.7266,
                "sweeper_accurate": 0.7266,
                "saves_inside_box": 1.5234,
                "possession_lost": 8.0828,
                "duels_won": 0.6322,
                "duels_lost": 0.0001,
                "total_contest": 0.1873,
                "won_contest": 0.1873,
                "fouls": 0.0,
                "fouls_drawn": 0.244,
                "total_own_half_passes": 18.7356,
                "accurate_own_half_passes": 18.0578,
                "gk_engine_opponent_lambda": 0.8739,
                "shots_faced": 8.3,
                "expected_saves": 2.03,
                "high_pressure_saves": 0.7,
                "opponent_faced": "Toni Martínez, Lucas Boyé",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "saves": 2.8925,
                "goals_prevented": -0.0604,
                "rating": 6.9357,
                "minutes": 90.0,
                "total_pass": 28.9397,
                "accurate_pass": 20.9048,
                "total_long_balls": 11.821,
                "accurate_long_balls": 3.8492,
                "touches": 39.9648,
                "clearances": 1.2859,
                "ball_recovery": 10.3719,
                "high_claims": 0.782,
                "punches": 0.8075,
                "aerial_won": 0.0585,
                "sweeper_actions": 0.7266,
                "sweeper_accurate": 0.7266,
                "saves_inside_box": 1.5234,
                "possession_lost": 8.0828,
                "duels_won": 0.6322,
                "duels_lost": 0.0001,
                "total_contest": 0.1873,
                "won_contest": 0.1873,
                "fouls": 0.0,
                "fouls_drawn": 0.244,
                "total_own_half_passes": 18.7356,
                "accurate_own_half_passes": 18.0578,
                "gk_engine_opponent_lambda": 0.8739,
                "shots_faced": 8.1,
                "expected_saves": 1.99,
                "high_pressure_saves": 0.68,
                "opponent_faced": "Toni Martínez, Lucas Boyé",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 8.3,
                  "after": 8.1
                },
                {
                  "stat": "expected_saves",
                  "before": 2.03,
                  "after": 1.99
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 0.7,
                  "after": 0.68
                }
              ]
            },
            {
              "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": {
                "saves": 2.8925,
                "goals_prevented": -0.0604,
                "rating": 6.9357,
                "minutes": 90.0,
                "total_pass": 28.9397,
                "accurate_pass": 20.9048,
                "total_long_balls": 11.821,
                "accurate_long_balls": 3.8492,
                "touches": 39.9648,
                "clearances": 1.2859,
                "ball_recovery": 10.3719,
                "high_claims": 0.782,
                "punches": 0.8075,
                "aerial_won": 0.0585,
                "sweeper_actions": 0.7266,
                "sweeper_accurate": 0.7266,
                "saves_inside_box": 1.5234,
                "possession_lost": 8.0828,
                "duels_won": 0.6322,
                "duels_lost": 0.0001,
                "total_contest": 0.1873,
                "won_contest": 0.1873,
                "fouls": 0.0,
                "fouls_drawn": 0.244,
                "total_own_half_passes": 18.7356,
                "accurate_own_half_passes": 18.0578,
                "gk_engine_opponent_lambda": 0.8739,
                "shots_faced": 8.1,
                "expected_saves": 1.99,
                "high_pressure_saves": 0.68,
                "opponent_faced": "Toni Martínez, Lucas Boyé",
                "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": 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": 1679,
                "fifa_rank": 1234.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "saves": 2.8925,
                "goals_prevented": -0.0604,
                "rating": 6.9357,
                "minutes": 90.0,
                "total_pass": 28.9397,
                "accurate_pass": 20.9048,
                "total_long_balls": 11.821,
                "accurate_long_balls": 3.8492,
                "touches": 39.9648,
                "clearances": 1.2859,
                "ball_recovery": 10.3719,
                "high_claims": 0.782,
                "punches": 0.8075,
                "aerial_won": 0.0585,
                "sweeper_actions": 0.7266,
                "sweeper_accurate": 0.7266,
                "saves_inside_box": 1.5234,
                "possession_lost": 8.0828,
                "duels_won": 0.6322,
                "duels_lost": 0.0001,
                "total_contest": 0.1873,
                "won_contest": 0.1873,
                "fouls": 0.0,
                "fouls_drawn": 0.244,
                "total_own_half_passes": 18.7356,
                "accurate_own_half_passes": 18.0578,
                "gk_engine_opponent_lambda": 0.8739,
                "shots_faced": 8.1,
                "expected_saves": 1.99,
                "high_pressure_saves": 0.68,
                "opponent_faced": "Toni Martínez, Lucas Boyé",
                "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": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "saves": 2.8925,
                "goals_prevented": -0.0604,
                "rating": 6.9357,
                "minutes": 90.0,
                "total_pass": 28.9397,
                "accurate_pass": 20.9048,
                "total_long_balls": 11.821,
                "accurate_long_balls": 3.8492,
                "touches": 39.9648,
                "clearances": 1.2859,
                "ball_recovery": 10.3719,
                "high_claims": 0.782,
                "punches": 0.8075,
                "aerial_won": 0.0585,
                "sweeper_actions": 0.7266,
                "sweeper_accurate": 0.7266,
                "saves_inside_box": 1.5234,
                "possession_lost": 8.0828,
                "duels_won": 0.6322,
                "duels_lost": 0.0001,
                "total_contest": 0.1873,
                "won_contest": 0.1873,
                "fouls": 0.0,
                "fouls_drawn": 0.244,
                "total_own_half_passes": 18.7356,
                "accurate_own_half_passes": 18.0578,
                "gk_engine_opponent_lambda": 0.8739,
                "shots_faced": 8.1,
                "expected_saves": 1.99,
                "high_pressure_saves": 0.68,
                "opponent_faced": "Toni Martínez, Lucas Boyé",
                "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": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 0.6035,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0
              }
            }
          ]
        },
        "Marcos Alonso": {
          "player_id": 69408,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 188,
          "market_value": 1300000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 7.0592,
            "minutes": 87,
            "total_pass": 75,
            "accurate_pass": 67,
            "duels_won": 4,
            "total_long_balls": 9,
            "accurate_long_balls": 5,
            "total_own_half_passes": 37,
            "accurate_own_half_passes": 35,
            "total_opp_half_passes": 37,
            "accurate_opp_half_passes": 31,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 88,
            "possession_lost": 10.0721,
            "dispossessed": 0.3732,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 5,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0061,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0415,
            "expected_assists": 0.0464,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0054,
            "ball_carries": 33,
            "total_progression": 191,
            "progressive_carries": 3,
            "key_pass": 0,
            "shots_off_target": 1,
            "opponent_faced": "Abderrahman Rebbach",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0407,
            "projected_assists": 0,
            "assist_probability": 0.0453,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421058,
              "match_date": "2026-10-11",
              "home_team": "Elche",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0091,
                "total_shots": 0,
                "total_pass": 57,
                "accurate_pass": 52,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 3,
                "aerial_won": 1,
                "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": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0355,
                "expected_assists": 0.0137,
                "total_shots": 1,
                "total_pass": 66,
                "accurate_pass": 58,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 2,
                "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": 16416348,
              "match_date": "2026-09-07",
              "home_team": "Getafe",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0843,
                "total_shots": 0,
                "total_pass": 82,
                "accurate_pass": 64,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 5,
                "aerial_won": 2,
                "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": 16416340,
              "match_date": "2026-09-03",
              "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": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0385,
                "total_shots": 0,
                "total_pass": 82,
                "accurate_pass": 75,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 9,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 51,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0125,
                "total_shots": 0,
                "total_pass": 72,
                "accurate_pass": 66,
                "interceptions": 3,
                "clearances": 4,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2348,
                "expected_assists": 0.0446,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 106,
                "accurate_pass": 97,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 6,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.047,
                "expected_assists": 0.0277,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 81,
                "accurate_pass": 76,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0194,
                "total_shots": 0,
                "total_pass": 55,
                "accurate_pass": 51,
                "clearances": 10,
                "aerial_won": 4,
                "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": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0347,
                "expected_assists": 0.1142,
                "total_shots": 1,
                "total_pass": 99,
                "accurate_pass": 87,
                "clearances": 4,
                "aerial_won": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083551,
              "match_date": "2026-05-09",
              "home_team": "Atlético Madrid",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.006,
                "total_shots": 0,
                "total_pass": 61,
                "accurate_pass": 51,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 1501,
            "combined_rank_score": 619.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 294.0,
            "sofascore_rating": 7.0469,
            "sofascore_appearances": 32.0,
            "fifa_rank": 945.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.0592,
            "source_file": "data/player_rankings.csv",
            "player_name": "Marcos Alonso",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ermedin Demirović",
                  "ranking": 1496
                },
                {
                  "player_name": "Julio Enciso",
                  "ranking": 1497
                },
                {
                  "player_name": "Johnny Cardoso",
                  "ranking": 1498
                },
                {
                  "player_name": "Jerdy Schouten",
                  "ranking": 1499
                },
                {
                  "player_name": "Hyeon-je Kang",
                  "ranking": 1500
                }
              ],
              "lower": [
                {
                  "player_name": "Eduardo Vargas",
                  "ranking": 1502
                },
                {
                  "player_name": "Tomislav Uskok",
                  "ranking": 1503
                },
                {
                  "player_name": "Jeison Fuentealba",
                  "ranking": 1504
                },
                {
                  "player_name": "Manuel Rivera",
                  "ranking": 1505
                },
                {
                  "player_name": "Dong-hyun Kang",
                  "ranking": 1506
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.776,
          "history_matches": 38,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 38,
            "data_confidence": 0.776,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9976,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 230.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.78,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1733
            },
            "rationale": "XGBoost regressor (D_service) evaluated 38 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Celta Vigo, rel: 0.17, 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.1529,
                "tackles": 1.434,
                "tackles_won": 0.9505,
                "clearances": 3.7482,
                "aerial_won": 1.4984,
                "total_shots": 0.5359,
                "rating": 7.0592,
                "minutes": 86.67,
                "total_pass": 74.9571,
                "accurate_pass": 66.7493,
                "duels_won": 3.8925,
                "total_long_balls": 8.5683,
                "accurate_long_balls": 4.7424,
                "total_own_half_passes": 37.4968,
                "accurate_own_half_passes": 35.3544,
                "total_opp_half_passes": 37.4603,
                "accurate_opp_half_passes": 31.3948,
                "crosses_total": 0.5169,
                "crosses_accurate": 0.0725,
                "touches": 87.9881,
                "possession_lost": 10.0963,
                "dispossessed": 0.3741,
                "duels_lost": 3.1373,
                "aerial_lost": 0.784,
                "total_contest": 0.473,
                "won_contest": 0.2719,
                "ball_recovery": 4.8114,
                "challenges_lost": 0.4989,
                "fouls": 1.2918,
                "fouls_drawn": 0.7806,
                "blocks": 0.5868,
                "goals": 0.0062,
                "goal_rate": 0.0062,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0371,
                "expected_assists": 0.0415,
                "shots_on_target": 0.0165,
                "big_chances_created": 0.0612,
                "xgot": 0.0048,
                "ball_carries": 33.2282,
                "total_progression": 191.6481,
                "progressive_carries": 2.5981,
                "key_pass": 0.1034,
                "shots_off_target": 0.5194
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-07",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-03",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 51.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 4.5041,
                  "aerialWon": 1.5336,
                  "totalClearance_p90": 4.7764,
                  "totalTackle": 1.4337,
                  "defensive_actions": 2.4911
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1529213190078735,
                    "model_output": 1.1529,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1198
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0331
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0299
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0236
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0219
                        }
                      ],
                      "others": 0.0637,
                      "total": 1.1529,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130327
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.033208
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.029078
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.022334
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.020308
                        }
                      ],
                      "others_margin": 0.056851
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.4340498447418213,
                    "model_output": 1.434,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1813
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0693
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0489
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0338
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0302
                        }
                      ],
                      "others": -0.0952,
                      "total": 1.434,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122481
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.043137
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.030219
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.021433
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.019547
                        }
                      ],
                      "others_margin": -0.064304
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.9505396485328674,
                    "model_output": 0.9505,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.117
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0339
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0233
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0228
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": 0.0224
                        }
                      ],
                      "others": -0.0097,
                      "total": 0.9505,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.128404
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.035572
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.024553
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.024016
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": 0.02359
                        }
                      ],
                      "others_margin": -0.010055
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.748220443725586,
                    "model_output": 3.7482,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3963
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.4056
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.3698
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.3417
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.1479
                        }
                      ],
                      "others": -0.3104,
                      "total": 3.7482,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.109257
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.100692
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.091368
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.084716
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.0358
                        }
                      ],
                      "others_margin": -0.079573
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.4984259605407715,
                    "model_output": 1.4984,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1341
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0935
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0797
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0721
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.068
                        }
                      ],
                      "others": -0.0461,
                      "total": 1.4984,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.092922
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.060051
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.048437
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.043717
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.043058
                        }
                      ],
                      "others_margin": -0.030353
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5359094142913818,
                    "model_output": 0.5359,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0381
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0348
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0237
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0215
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0202
                        }
                      ],
                      "others": 0.0109,
                      "total": 0.5359,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.038104
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.034845
                        },
                        {
                          "name": "touches",
                          "margin": -0.023722
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.021456
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.020159
                        }
                      ],
                      "others_margin": 0.010885
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.0591535568237305,
                    "model_output": 7.0592,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0889
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0658
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0433
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0389
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.026
                        }
                      ],
                      "others": 0.0116,
                      "total": 7.0592,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.088924
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.065771
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.043344
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.038874
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.025989
                        }
                      ],
                      "others_margin": 0.011549
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 38,
                  "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 0.9976, quality 0.437)",
              "stats": {
                "interceptions": 1.1502,
                "tackles": 1.4306,
                "tackles_won": 0.9483,
                "clearances": 3.7392,
                "aerial_won": 1.4948,
                "total_shots": 0.5347,
                "rating": 7.0592,
                "minutes": 86.67,
                "total_pass": 74.7772,
                "accurate_pass": 66.5891,
                "duels_won": 3.8832,
                "total_long_balls": 8.5477,
                "accurate_long_balls": 4.731,
                "total_own_half_passes": 37.4068,
                "accurate_own_half_passes": 35.2695,
                "total_opp_half_passes": 37.3704,
                "accurate_opp_half_passes": 31.3195,
                "crosses_total": 0.5157,
                "crosses_accurate": 0.0723,
                "touches": 87.7769,
                "possession_lost": 10.0721,
                "dispossessed": 0.3732,
                "duels_lost": 3.1298,
                "aerial_lost": 0.7821,
                "total_contest": 0.4719,
                "won_contest": 0.2712,
                "ball_recovery": 4.7999,
                "challenges_lost": 0.4977,
                "fouls": 1.2887,
                "fouls_drawn": 0.7787,
                "blocks": 0.5854,
                "goals": 0.0062,
                "goal_rate": 0.0062,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.037,
                "expected_assists": 0.0414,
                "shots_on_target": 0.0165,
                "big_chances_created": 0.0611,
                "xgot": 0.0048,
                "ball_carries": 33.1485,
                "total_progression": 191.1881,
                "progressive_carries": 2.5919,
                "key_pass": 0.1032,
                "shots_off_target": 0.5182
              },
              "params": {
                "market_value_eur": 1300000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9976,
                "reference_quality": 0.505,
                "history_matches": 38,
                "history_shrink": 0.1163,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0131)",
              "stats": {
                "interceptions": 1.1739,
                "tackles": 1.4306,
                "tackles_won": 0.9553,
                "clearances": 3.7392,
                "aerial_won": 1.4948,
                "total_shots": 0.5375,
                "rating": 7.0592,
                "minutes": 86.67,
                "total_pass": 74.7772,
                "accurate_pass": 66.5891,
                "duels_won": 3.8832,
                "total_long_balls": 8.5477,
                "accurate_long_balls": 4.731,
                "total_own_half_passes": 37.4068,
                "accurate_own_half_passes": 35.2695,
                "total_opp_half_passes": 37.3704,
                "accurate_opp_half_passes": 31.3195,
                "crosses_total": 0.5186,
                "crosses_accurate": 0.0723,
                "touches": 87.7769,
                "possession_lost": 10.0721,
                "dispossessed": 0.3732,
                "duels_lost": 3.1298,
                "aerial_lost": 0.7821,
                "total_contest": 0.4719,
                "won_contest": 0.2712,
                "ball_recovery": 4.7999,
                "challenges_lost": 0.4977,
                "fouls": 1.2912,
                "fouls_drawn": 0.7782,
                "blocks": 0.5854,
                "goals": 0.0061,
                "goal_rate": 0.0061,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.037,
                "expected_assists": 0.0414,
                "shots_on_target": 0.0163,
                "big_chances_created": 0.0611,
                "xgot": 0.0048,
                "ball_carries": 33.1485,
                "total_progression": 191.1881,
                "progressive_carries": 2.5919,
                "key_pass": 0.1032,
                "shots_off_target": 0.5182
              },
              "params": {
                "blend_weight": 0.0131,
                "history_matches": 38,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.963,
                "prior_reliability": 0.1733,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 1.1502,
                  "after": 1.1739
                },
                {
                  "stat": "wonTackle",
                  "before": 0.9483,
                  "after": 0.9553
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1739,
                "tackles": 1.4306,
                "tackles_won": 0.9553,
                "clearances": 3.7392,
                "aerial_won": 1.4948,
                "total_shots": 0.5375,
                "rating": 7.0592,
                "minutes": 86.67,
                "total_pass": 74.7772,
                "accurate_pass": 66.5891,
                "duels_won": 3.8832,
                "total_long_balls": 8.5477,
                "accurate_long_balls": 4.731,
                "total_own_half_passes": 37.4068,
                "accurate_own_half_passes": 35.2695,
                "total_opp_half_passes": 37.3704,
                "accurate_opp_half_passes": 31.3195,
                "crosses_total": 0.5186,
                "crosses_accurate": 0.0723,
                "touches": 87.7769,
                "possession_lost": 10.0721,
                "dispossessed": 0.3732,
                "duels_lost": 3.1298,
                "aerial_lost": 0.7821,
                "total_contest": 0.4719,
                "won_contest": 0.2712,
                "ball_recovery": 4.7999,
                "challenges_lost": 0.4977,
                "fouls": 1.2912,
                "fouls_drawn": 0.7782,
                "blocks": 0.5854,
                "goals": 0.0061,
                "goal_rate": 0.0061,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.037,
                "expected_assists": 0.0414,
                "shots_on_target": 0.0163,
                "big_chances_created": 0.0611,
                "xgot": 0.0048,
                "ball_carries": 33.1485,
                "total_progression": 191.1881,
                "progressive_carries": 2.5919,
                "key_pass": 0.1032,
                "shots_off_target": 0.5182
              },
              "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.1739,
                "tackles": 1.4306,
                "tackles_won": 0.9553,
                "clearances": 3.7392,
                "aerial_won": 1.4948,
                "total_shots": 0.5375,
                "rating": 7.0592,
                "minutes": 86.67,
                "total_pass": 74.7772,
                "accurate_pass": 66.5891,
                "duels_won": 3.8832,
                "total_long_balls": 8.5477,
                "accurate_long_balls": 4.731,
                "total_own_half_passes": 37.4068,
                "accurate_own_half_passes": 35.2695,
                "total_opp_half_passes": 37.3704,
                "accurate_opp_half_passes": 31.3195,
                "crosses_total": 0.5186,
                "crosses_accurate": 0.0723,
                "touches": 87.7769,
                "possession_lost": 10.0721,
                "dispossessed": 0.3732,
                "duels_lost": 3.1298,
                "aerial_lost": 0.7821,
                "total_contest": 0.4719,
                "won_contest": 0.2712,
                "ball_recovery": 4.7999,
                "challenges_lost": 0.4977,
                "fouls": 1.2912,
                "fouls_drawn": 0.7782,
                "blocks": 0.5854,
                "goals": 0.0061,
                "goal_rate": 0.0061,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.037,
                "expected_assists": 0.0414,
                "shots_on_target": 0.0163,
                "big_chances_created": 0.0611,
                "xgot": 0.0048,
                "ball_carries": 33.1485,
                "total_progression": 191.1881,
                "progressive_carries": 2.5919,
                "key_pass": 0.1032,
                "shots_off_target": 0.5182,
                "opponent_faced": "Abderrahman Rebbach",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Abderrahman Rebbach",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1739,
                "tackles": 1.4306,
                "tackles_won": 0.9553,
                "clearances": 3.7392,
                "aerial_won": 1.4948,
                "total_shots": 0.5375,
                "rating": 7.0592,
                "minutes": 86.67,
                "total_pass": 74.7772,
                "accurate_pass": 66.5891,
                "duels_won": 3.8832,
                "total_long_balls": 8.5477,
                "accurate_long_balls": 4.731,
                "total_own_half_passes": 37.4068,
                "accurate_own_half_passes": 35.2695,
                "total_opp_half_passes": 37.3704,
                "accurate_opp_half_passes": 31.3195,
                "crosses_total": 0.5186,
                "crosses_accurate": 0.0723,
                "touches": 87.7769,
                "possession_lost": 10.0721,
                "dispossessed": 0.3732,
                "duels_lost": 3.1298,
                "aerial_lost": 0.7821,
                "total_contest": 0.4719,
                "won_contest": 0.2712,
                "ball_recovery": 4.7999,
                "challenges_lost": 0.4977,
                "fouls": 1.2912,
                "fouls_drawn": 0.7782,
                "blocks": 0.5854,
                "goal_rate": 0.0061,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.037,
                "expected_assists": 0.0414,
                "shots_on_target": 0.0163,
                "big_chances_created": 0.0611,
                "xgot": 0.0048,
                "ball_carries": 33.1485,
                "total_progression": 191.1881,
                "progressive_carries": 2.5919,
                "key_pass": 0.1032,
                "shots_off_target": 0.5182,
                "opponent_faced": "Abderrahman Rebbach",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "interceptions": 1.1739,
                "tackles": 1.4306,
                "tackles_won": 0.9553,
                "clearances": 3.7392,
                "aerial_won": 1.4948,
                "total_shots": 0.5375,
                "rating": 7.0592,
                "minutes": 86.67,
                "total_pass": 74.7772,
                "accurate_pass": 66.5891,
                "duels_won": 3.8832,
                "total_long_balls": 8.5477,
                "accurate_long_balls": 4.731,
                "total_own_half_passes": 37.4068,
                "accurate_own_half_passes": 35.2695,
                "total_opp_half_passes": 37.3704,
                "accurate_opp_half_passes": 31.3195,
                "crosses_total": 0.5186,
                "crosses_accurate": 0.0723,
                "touches": 87.7769,
                "possession_lost": 10.0721,
                "dispossessed": 0.3732,
                "duels_lost": 3.1298,
                "aerial_lost": 0.7821,
                "total_contest": 0.4719,
                "won_contest": 0.2712,
                "ball_recovery": 4.7999,
                "challenges_lost": 0.4977,
                "fouls": 1.2912,
                "fouls_drawn": 0.7782,
                "blocks": 0.5854,
                "goal_rate": 0.0061,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0415,
                "expected_assists": 0.0464,
                "shots_on_target": 0.0163,
                "big_chances_created": 0.0611,
                "xgot": 0.0054,
                "ball_carries": 33.1485,
                "total_progression": 191.1881,
                "progressive_carries": 2.5919,
                "key_pass": 0.1032,
                "shots_off_target": 0.5182,
                "opponent_faced": "Abderrahman Rebbach",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "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": {
                "interceptions": 1.1739,
                "tackles": 1.4306,
                "tackles_won": 0.9553,
                "clearances": 3.7392,
                "aerial_won": 1.4948,
                "total_shots": 0.5375,
                "rating": 7.0592,
                "minutes": 86.67,
                "total_pass": 74.7772,
                "accurate_pass": 66.5891,
                "duels_won": 3.8832,
                "total_long_balls": 8.5477,
                "accurate_long_balls": 4.731,
                "total_own_half_passes": 37.4068,
                "accurate_own_half_passes": 35.2695,
                "total_opp_half_passes": 37.3704,
                "accurate_opp_half_passes": 31.3195,
                "crosses_total": 0.5186,
                "crosses_accurate": 0.0723,
                "touches": 87.7769,
                "possession_lost": 10.0721,
                "dispossessed": 0.3732,
                "duels_lost": 3.1298,
                "aerial_lost": 0.7821,
                "total_contest": 0.4719,
                "won_contest": 0.2712,
                "ball_recovery": 4.7999,
                "challenges_lost": 0.4977,
                "fouls": 1.2912,
                "fouls_drawn": 0.7782,
                "blocks": 0.5854,
                "goal_rate": 0.0061,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0415,
                "expected_assists": 0.0464,
                "shots_on_target": 0.0163,
                "big_chances_created": 0.0611,
                "xgot": 0.0054,
                "ball_carries": 33.1485,
                "total_progression": 191.1881,
                "progressive_carries": 2.5919,
                "key_pass": 0.1032,
                "shots_off_target": 0.5182,
                "opponent_faced": "Abderrahman Rebbach",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1501,
                "fifa_rank": 945.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1.1739,
                "tackles": 1.4306,
                "tackles_won": 0.9553,
                "clearances": 3.7392,
                "aerial_won": 1.4948,
                "total_shots": 0.5375,
                "rating": 7.0592,
                "minutes": 86.67,
                "total_pass": 74.7772,
                "accurate_pass": 66.5891,
                "duels_won": 3.8832,
                "total_long_balls": 8.5477,
                "accurate_long_balls": 4.731,
                "total_own_half_passes": 37.4068,
                "accurate_own_half_passes": 35.2695,
                "total_opp_half_passes": 37.3704,
                "accurate_opp_half_passes": 31.3195,
                "crosses_total": 0.5186,
                "crosses_accurate": 0.0723,
                "touches": 87.7769,
                "possession_lost": 10.0721,
                "dispossessed": 0.3732,
                "duels_lost": 3.1298,
                "aerial_lost": 0.7821,
                "total_contest": 0.4719,
                "won_contest": 0.2712,
                "ball_recovery": 4.7999,
                "challenges_lost": 0.4977,
                "fouls": 1.2912,
                "fouls_drawn": 0.7782,
                "blocks": 0.5854,
                "goal_rate": 0.0061,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0415,
                "expected_assists": 0.0464,
                "shots_on_target": 0.0163,
                "big_chances_created": 0.0611,
                "xgot": 0.0054,
                "ball_carries": 33.1485,
                "total_progression": 191.1881,
                "progressive_carries": 2.5919,
                "key_pass": 0.1032,
                "shots_off_target": 0.5182,
                "opponent_faced": "Abderrahman Rebbach",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0407,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0407,
                "goal_rate": 0.0061,
                "scorer_weight": 0.0332,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0363,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.1739,
                "tackles": 1.4306,
                "tackles_won": 0.9553,
                "clearances": 3.7392,
                "aerial_won": 1.4948,
                "total_shots": 0.5375,
                "rating": 7.0592,
                "minutes": 86.67,
                "total_pass": 74.7772,
                "accurate_pass": 66.5891,
                "duels_won": 3.8832,
                "total_long_balls": 8.5477,
                "accurate_long_balls": 4.731,
                "total_own_half_passes": 37.4068,
                "accurate_own_half_passes": 35.2695,
                "total_opp_half_passes": 37.3704,
                "accurate_opp_half_passes": 31.3195,
                "crosses_total": 0.5186,
                "crosses_accurate": 0.0723,
                "touches": 87.7769,
                "possession_lost": 10.0721,
                "dispossessed": 0.3732,
                "duels_lost": 3.1298,
                "aerial_lost": 0.7821,
                "total_contest": 0.4719,
                "won_contest": 0.2712,
                "ball_recovery": 4.7999,
                "challenges_lost": 0.4977,
                "fouls": 1.2912,
                "fouls_drawn": 0.7782,
                "blocks": 0.5854,
                "goal_rate": 0.0061,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0415,
                "expected_assists": 0.0464,
                "shots_on_target": 0.0163,
                "big_chances_created": 0.0611,
                "xgot": 0.0054,
                "ball_carries": 33.1485,
                "total_progression": 191.1881,
                "progressive_carries": 2.5919,
                "key_pass": 0.1032,
                "shots_off_target": 0.5182,
                "opponent_faced": "Abderrahman Rebbach",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0407,
                "projected_assists": 0,
                "assist_probability": 0.0453,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0453,
                "assist_rate": 0.0,
                "provider_weight": 0.0371,
                "squad_weight_total": 0.6035,
                "weight_share": 0.0615,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12
              }
            }
          ]
        }
      },
      "bench_players": {
        "Altay Bayındır": {
          "player_id": 815890,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 198,
          "market_value": 4900000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0042,
            "rating": 7.0269,
            "minutes": 4,
            "total_pass": 4,
            "accurate_pass": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "touches": 6,
            "clearances": 0,
            "ball_recovery": 1,
            "high_claims": 0,
            "punches": 0.032,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 1.8429,
            "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.113,
            "bench_expected_minutes": 4.49,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.247,
            "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": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 14025184,
              "match_date": "2025-09-27",
              "home_team": "Brentford",
              "away_team": "Manchester United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Manchester United",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0061,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 15,
                "clearances": 2,
                "ball_recovery": 5,
                "saves": 5,
                "goals_prevented": 0.0263
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025169,
              "match_date": "2025-09-20",
              "home_team": "Manchester United",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Manchester United",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 9,
                "clearances": 3,
                "duels_won": 1,
                "ball_recovery": 2,
                "goals_prevented": -0.4062
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025142,
              "match_date": "2025-09-14",
              "home_team": "Manchester City",
              "away_team": "Manchester United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Manchester United",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0031,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 16,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 4,
                "saves": 3,
                "goals_prevented": -0.7035
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025106,
              "match_date": "2025-08-30",
              "home_team": "Manchester United",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Manchester United",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0051,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 20,
                "ball_recovery": 12,
                "saves": 1,
                "goals_prevented": -0.3418
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025080,
              "match_date": "2025-08-24",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Manchester United",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0254,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 12,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 6,
                "saves": 2,
                "goals_prevented": 0.374
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025056,
              "match_date": "2025-08-17",
              "home_team": "Manchester United",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Manchester United",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 35,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 10,
                "saves": 2,
                "goals_prevented": 0.2134
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3182,
            "combined_rank_score": 1148.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 91.0,
            "sofascore_rating": 7.5,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2205.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0269,
            "source_file": "data/player_rankings.csv",
            "player_name": "Altay Bayındır",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jordan Teze",
                  "ranking": 3177
                },
                {
                  "player_name": "Charlie Cresswell",
                  "ranking": 3178
                },
                {
                  "player_name": "Jaydee Canvot",
                  "ranking": 3179
                },
                {
                  "player_name": "Julio César Enciso",
                  "ranking": 3180
                },
                {
                  "player_name": "Franco Mastantuono",
                  "ranking": 3181
                }
              ],
              "lower": [
                {
                  "player_name": "Daniel Bragança",
                  "ranking": 3183
                },
                {
                  "player_name": "Hákon Arnar Haraldsson",
                  "ranking": 3184
                },
                {
                  "player_name": "Brajan Gruda",
                  "ranking": 3185
                },
                {
                  "player_name": "Guillaume Restes",
                  "ranking": 3186
                },
                {
                  "player_name": "Johan Mojica",
                  "ranking": 3187
                }
              ]
            }
          },
          "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"
            ],
            "bench_expected_minutes": 4.485343983285876,
            "bench_appearance_prob": 0.11297018105844892,
            "market_value_adjustment": 0.994,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "sub_appearances": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection scaled from XGBoost G_service (6 historical appearances) to 4.5 expected mins (appearance prob 0.11); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.7117,
                "goals_prevented": 0.0269,
                "rating": 7.0269,
                "minutes": 28.5,
                "total_pass": 27.9934,
                "accurate_pass": 16.4452,
                "total_long_balls": 16.378,
                "accurate_long_balls": 4.9555,
                "touches": 36.0455,
                "clearances": 1.3766,
                "ball_recovery": 5.9072,
                "high_claims": 1.0,
                "punches": 0.2047,
                "aerial_won": 0.1257,
                "sweeper_actions": 0.7191,
                "sweeper_accurate": 0.7191,
                "saves_inside_box": 2.1066,
                "possession_lost": 11.7807,
                "duels_won": 0.7181,
                "duels_lost": 0.174,
                "total_contest": 0.174,
                "won_contest": 0.174,
                "fouls": 0.0,
                "fouls_drawn": 0.4184,
                "total_own_half_passes": 13.6955,
                "accurate_own_half_passes": 12.1461
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-18T10:04:16.386956+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 200,
                    "rows": 7041
                  }
                },
                "player_history": [
                  {
                    "match_date": "2025-09-27",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2408,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-09-20",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2047,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2025-09-14",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.174,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2025-08-30",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1479,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2025-08-24",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1257,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2025-08-17",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1069,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 0.0,
                  "accurateLongBalls": 4.9555,
                  "save_contribution": 2.1592,
                  "distribution_accuracy": 0.8585,
                  "accurateOwnHalfPasses": 12.1461,
                  "passValueNormalized": 0.0913,
                  "totalOwnHalfPasses": 13.6955
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.711749792098999,
                    "model_output": 2.7117,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "save_contribution",
                        "importance": 0.0393
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.039
                      },
                      {
                        "name": "saves",
                        "importance": 0.0355
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0354
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.941,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2283
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0152
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.014
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0135
                        },
                        {
                          "name": "save_contribution",
                          "contribution": 0.0127
                        }
                      ],
                      "others": -0.0293,
                      "total": 2.7118,
                      "log_link": true,
                      "margin_base": 1.078763,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.080809
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.005595
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": 0.005112
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.004923
                        },
                        {
                          "name": "save_contribution",
                          "margin": 0.004639
                        }
                      ],
                      "others_margin": -0.010784
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.026862088590860367,
                    "model_output": 0.0269,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.0405
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.0401
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0394
                      },
                      {
                        "name": "totalOwnHalfPasses",
                        "importance": 0.0381
                      },
                      {
                        "name": "punches",
                        "importance": 0.0363
                      }
                    ],
                    "decomposition": {
                      "base": -0.0281,
                      "items": [
                        {
                          "name": "inside_box_save_rate",
                          "contribution": 0.018
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0123
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0122
                        },
                        {
                          "name": "save_contribution",
                          "contribution": 0.0119
                        },
                        {
                          "name": "goodHighClaim",
                          "contribution": -0.0115
                        }
                      ],
                      "others": 0.0365,
                      "total": 0.0269,
                      "log_link": false,
                      "margin_base": -0.028113,
                      "item_margins": [
                        {
                          "name": "inside_box_save_rate",
                          "margin": 0.017985
                        },
                        {
                          "name": "saves",
                          "margin": 0.012328
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.012236
                        },
                        {
                          "name": "save_contribution",
                          "margin": 0.011857
                        },
                        {
                          "name": "goodHighClaim",
                          "margin": -0.011519
                        }
                      ],
                      "others_margin": 0.036559
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.026858329772949,
                    "model_output": 7.0269,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0379
                      },
                      {
                        "name": "commanding_index",
                        "importance": 0.0375
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.037
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0354
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 6.9974,
                      "items": [
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0277
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0235
                        },
                        {
                          "name": "save_contribution",
                          "contribution": 0.0222
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0197
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0137
                        }
                      ],
                      "others": -0.0303,
                      "total": 7.0269,
                      "log_link": false,
                      "margin_base": 6.997403,
                      "item_margins": [
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.027696
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.023477
                        },
                        {
                          "name": "save_contribution",
                          "margin": 0.02216
                        },
                        {
                          "name": "saves",
                          "margin": 0.019682
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.013709
                        }
                      ],
                      "others_margin": -0.030314
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 6,
                  "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.9940, quality 0.461)",
              "stats": {
                "saves": 2.6955,
                "goals_prevented": 0.0267,
                "rating": 7.0269,
                "minutes": 28.5,
                "total_pass": 27.8254,
                "accurate_pass": 16.3465,
                "total_long_balls": 16.2797,
                "accurate_long_balls": 4.9258,
                "touches": 35.8292,
                "clearances": 1.3683,
                "ball_recovery": 5.8718,
                "high_claims": 0.994,
                "punches": 0.2035,
                "aerial_won": 0.1249,
                "sweeper_actions": 0.7148,
                "sweeper_accurate": 0.7148,
                "saves_inside_box": 2.094,
                "possession_lost": 11.71,
                "duels_won": 0.7138,
                "duels_lost": 0.173,
                "total_contest": 0.173,
                "won_contest": 0.173,
                "fouls": 0.0,
                "fouls_drawn": 0.4159,
                "total_own_half_passes": 13.6133,
                "accurate_own_half_passes": 12.0732
              },
              "params": {
                "market_value_eur": 4900000,
                "quality_factor": 0.4609,
                "boost_factor": 0.994,
                "reference_quality": 0.505,
                "history_matches": 6,
                "history_shrink": 0.4545,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 28.5 to 4.5 expected minutes (appearance prob 0.11)",
              "stats": {
                "saves": 0.4242,
                "goals_prevented": 0.0042,
                "rating": 7.0269,
                "minutes": 4.49,
                "total_pass": 4.3792,
                "accurate_pass": 2.5726,
                "total_long_balls": 2.5621,
                "accurate_long_balls": 0.7752,
                "touches": 5.6388,
                "clearances": 0.2153,
                "ball_recovery": 0.9241,
                "high_claims": 0.1564,
                "punches": 0.032,
                "aerial_won": 0.0197,
                "sweeper_actions": 0.1125,
                "sweeper_accurate": 0.1125,
                "saves_inside_box": 0.3296,
                "possession_lost": 1.8429,
                "duels_won": 0.1123,
                "duels_lost": 0.0272,
                "total_contest": 0.0272,
                "won_contest": 0.0272,
                "fouls": 0.0,
                "fouls_drawn": 0.0655,
                "total_own_half_passes": 2.1425,
                "accurate_own_half_passes": 1.9001,
                "bench_appearance_probability": 0.113,
                "bench_expected_minutes": 4.49
              },
              "params": {
                "expected_minutes": 4.49,
                "projection_minutes": 28.5,
                "minutes_scale": 0.1574,
                "appearance_probability": 0.113
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.4242,
                "goals_prevented": 0.0042,
                "rating": 7.0269,
                "minutes": 4.49,
                "total_pass": 4.3792,
                "accurate_pass": 2.5726,
                "total_long_balls": 2.5621,
                "accurate_long_balls": 0.7752,
                "touches": 5.6388,
                "clearances": 0.2153,
                "ball_recovery": 0.9241,
                "high_claims": 0.1564,
                "punches": 0.032,
                "aerial_won": 0.0197,
                "sweeper_actions": 0.1125,
                "sweeper_accurate": 0.1125,
                "saves_inside_box": 0.3296,
                "possession_lost": 1.8429,
                "duels_won": 0.1123,
                "duels_lost": 0.0272,
                "total_contest": 0.0272,
                "won_contest": 0.0272,
                "fouls": 0.0,
                "fouls_drawn": 0.0655,
                "total_own_half_passes": 2.1425,
                "accurate_own_half_passes": 1.9001,
                "bench_appearance_probability": 0.113,
                "bench_expected_minutes": 4.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": {
                "saves": 0.4242,
                "goals_prevented": 0.0042,
                "rating": 7.0269,
                "minutes": 4.49,
                "total_pass": 4.3792,
                "accurate_pass": 2.5726,
                "total_long_balls": 2.5621,
                "accurate_long_balls": 0.7752,
                "touches": 5.6388,
                "clearances": 0.2153,
                "ball_recovery": 0.9241,
                "high_claims": 0.1564,
                "punches": 0.032,
                "aerial_won": 0.0197,
                "sweeper_actions": 0.1125,
                "sweeper_accurate": 0.1125,
                "saves_inside_box": 0.3296,
                "possession_lost": 1.8429,
                "duels_won": 0.1123,
                "duels_lost": 0.0272,
                "total_contest": 0.0272,
                "won_contest": 0.0272,
                "fouls": 0.0,
                "fouls_drawn": 0.0655,
                "total_own_half_passes": 2.1425,
                "accurate_own_half_passes": 1.9001,
                "bench_appearance_probability": 0.113,
                "bench_expected_minutes": 4.49,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.113,
                "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 75.0)",
              "stats": {
                "saves": 0.4242,
                "goals_prevented": 0.0042,
                "rating": 7.0269,
                "minutes": 4.49,
                "total_pass": 4.3792,
                "accurate_pass": 2.5726,
                "total_long_balls": 2.5621,
                "accurate_long_balls": 0.7752,
                "touches": 5.6388,
                "clearances": 0.2153,
                "ball_recovery": 0.9241,
                "high_claims": 0.1564,
                "punches": 0.032,
                "aerial_won": 0.0197,
                "sweeper_actions": 0.1125,
                "sweeper_accurate": 0.1125,
                "saves_inside_box": 0.3296,
                "possession_lost": 1.8429,
                "duels_won": 0.1123,
                "duels_lost": 0.0272,
                "total_contest": 0.0272,
                "won_contest": 0.0272,
                "fouls": 0.0,
                "fouls_drawn": 0.0655,
                "total_own_half_passes": 2.1425,
                "accurate_own_half_passes": 1.9001,
                "bench_appearance_probability": 0.113,
                "bench_expected_minutes": 4.49,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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": 75.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": 3182,
                "fifa_rank": 2205.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            }
          ]
        },
        "Javi Rodríguez": {
          "player_id": 1526627,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 20,
          "height": 184,
          "market_value": 17500000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7657,
            "minutes": 10,
            "total_pass": 5,
            "accurate_pass": 4,
            "duels_won": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 7,
            "possession_lost": 1.0839,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0009,
            "expected_assists": 0.0013,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 0,
            "total_progression": 1,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.327,
            "bench_expected_minutes": 10.26,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.247,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16416340,
              "match_date": "2026-09-03",
              "home_team": "Real Sociedad",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 12,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 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": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0044,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 30,
                "tackles": 1,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.046,
                "total_shots": 0,
                "total_pass": 72,
                "accurate_pass": 65,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0149,
                "expected_assists": 0.0326,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 84,
                "accurate_pass": 80,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "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": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0109,
                "expected_assists": 0.0202,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 66,
                "accurate_pass": 61,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 52,
                "accurate_pass": 44,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 9,
                "aerial_won": 2,
                "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": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.026,
                "total_shots": 0,
                "total_pass": 74,
                "accurate_pass": 66,
                "key_pass": 1,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083551,
              "match_date": "2026-05-09",
              "home_team": "Atlético Madrid",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 8.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.006,
                "total_shots": 0,
                "total_pass": 59,
                "accurate_pass": 54,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083401,
              "match_date": "2026-05-03",
              "home_team": "Celta Vigo",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0338,
                "expected_assists": 0.0112,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 33,
                "accurate_pass": 26,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083248,
              "match_date": "2026-04-26",
              "home_team": "Villarreal",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1127,
                "expected_assists": 0.0182,
                "total_shots": 1,
                "total_pass": 72,
                "accurate_pass": 68,
                "interceptions": 3,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3352,
            "combined_rank_score": 1302.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 616.0,
            "sofascore_rating": 6.7727,
            "sofascore_appearances": 33.0,
            "fifa_rank": 1988.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7657,
            "source_file": "data/player_rankings.csv",
            "player_name": "Javi Rodríguez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yerry Mina",
                  "ranking": 3347
                },
                {
                  "player_name": "Ángel Correa",
                  "ranking": 3348
                },
                {
                  "player_name": "Patrik Hrošovský",
                  "ranking": 3349
                },
                {
                  "player_name": "Aníbal Moreno",
                  "ranking": 3350
                },
                {
                  "player_name": "Morato",
                  "ranking": 3351
                }
              ],
              "lower": [
                {
                  "player_name": "Kristian Thorstvedt",
                  "ranking": 3353
                },
                {
                  "player_name": "Danilo Santos",
                  "ranking": 3354
                },
                {
                  "player_name": "Soufiane Rahimi",
                  "ranking": 3355
                },
                {
                  "player_name": "Héctor Bellerín",
                  "ranking": 3356
                },
                {
                  "player_name": "Lucas Perri",
                  "ranking": 3357
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.776,
          "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.776,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 10.26,
            "bench_appearance_prob": 0.327,
            "market_value_adjustment": 1.0036,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 4.0,
              "starts": 3.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 7.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.1733
            },
            "rationale": "Bench projection scaled from XGBoost D_service (37 historical appearances) to 10.3 expected mins (appearance prob 0.33); FBref playing time empirical prior: 1.0 sub appearances, 7.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.2982,
                "tackles": 0.4985,
                "tackles_won": 0.3977,
                "clearances": 1.27,
                "aerial_won": 0.3143,
                "total_shots": 0.1499,
                "rating": 6.7657,
                "minutes": 24.81,
                "total_pass": 11.9827,
                "accurate_pass": 10.2886,
                "duels_won": 0.911,
                "total_long_balls": 1.5253,
                "accurate_long_balls": 0.5524,
                "total_own_half_passes": 6.8023,
                "accurate_own_half_passes": 5.9703,
                "total_opp_half_passes": 5.1804,
                "accurate_opp_half_passes": 4.3183,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 17.8385,
                "possession_lost": 2.6115,
                "dispossessed": 0.0,
                "duels_lost": 1.0999,
                "aerial_lost": 0.174,
                "total_contest": 0.2997,
                "won_contest": 0.0,
                "ball_recovery": 0.6541,
                "challenges_lost": 0.2736,
                "fouls": 0.3526,
                "fouls_drawn": 0.4856,
                "blocks": 0.2047,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0021,
                "expected_assists": 0.0032,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.6696,
                "total_progression": 1.7628,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1499
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-03",
                    "opponent": "Real Sociedad",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1504,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 2.2233,
                  "aerialWon": 0.5288,
                  "totalClearance_p90": 2.492,
                  "totalTackle": 0.7985,
                  "defensive_actions": 1.5766
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.29816991090774536,
                    "model_output": 0.2982,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4815
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0133
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0129
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0108
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0084
                        }
                      ],
                      "others": -0.0358,
                      "total": 0.2982,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.819306
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.035802
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.035767
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.030997
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.024805
                        }
                      ],
                      "others_margin": -0.113608
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.49854782223701477,
                    "model_output": 0.4985,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7312
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0322
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0291
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0207
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0177
                        }
                      ],
                      "others": -0.0621,
                      "total": 0.4985,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.745447
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.049998
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.047411
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.035225
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.031099
                        }
                      ],
                      "others_margin": -0.117262
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.3977053463459015,
                    "model_output": 0.3977,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4153
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0427
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0239
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0185
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0171
                        }
                      ],
                      "others": -0.0614,
                      "total": 0.3977,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.665878
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.092943
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.05098
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.039681
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.036667
                        }
                      ],
                      "others_margin": -0.143514
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.2700304985046387,
                    "model_output": 1.27,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.01
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.219
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0806
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0798
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0829
                        }
                      ],
                      "others": -0.0158,
                      "total": 1.27,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.880802
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.167118
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.069276
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.068611
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.06666
                        }
                      ],
                      "others_margin": -0.012391
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.3142695128917694,
                    "model_output": 0.3143,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8306
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1595
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.028
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.026
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0198
                        }
                      ],
                      "others": -0.0511,
                      "total": 0.3143,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.923937
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.344881
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.075175
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.069798
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.052894
                        }
                      ],
                      "others_margin": -0.150551
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.14989574253559113,
                    "model_output": 0.1499,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2166
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0494
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0192
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0135
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0079
                        }
                      ],
                      "others": -0.0564,
                      "total": 0.1499,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.216623
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.049402
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.019195
                        },
                        {
                          "name": "rating",
                          "margin": -0.013512
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.007859
                        }
                      ],
                      "others_margin": -0.056404
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.765689373016357,
                    "model_output": 6.7657,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "accuratePass",
                          "contribution": 0.0241
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0234
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0226
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0161
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0138
                        }
                      ],
                      "others": -0.014,
                      "total": 6.7657,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "accuratePass",
                          "margin": 0.024108
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.023396
                        },
                        {
                          "name": "rating",
                          "margin": -0.022562
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.016072
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.013753
                        }
                      ],
                      "others_margin": -0.014127
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 37,
                  "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.0036, quality 0.606)",
              "stats": {
                "interceptions": 0.2992,
                "tackles": 0.5003,
                "tackles_won": 0.3991,
                "clearances": 1.2746,
                "aerial_won": 0.3154,
                "total_shots": 0.1504,
                "rating": 6.7657,
                "minutes": 24.81,
                "total_pass": 12.0258,
                "accurate_pass": 10.3256,
                "duels_won": 0.9143,
                "total_long_balls": 1.5308,
                "accurate_long_balls": 0.5544,
                "total_own_half_passes": 6.8268,
                "accurate_own_half_passes": 5.9918,
                "total_opp_half_passes": 5.199,
                "accurate_opp_half_passes": 4.3338,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 17.9027,
                "possession_lost": 2.6209,
                "dispossessed": 0.0,
                "duels_lost": 1.1039,
                "aerial_lost": 0.1746,
                "total_contest": 0.3008,
                "won_contest": 0.0,
                "ball_recovery": 0.6565,
                "challenges_lost": 0.2746,
                "fouls": 0.3539,
                "fouls_drawn": 0.4873,
                "blocks": 0.2054,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0021,
                "expected_assists": 0.0032,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.672,
                "total_progression": 1.7691,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1504
              },
              "params": {
                "market_value_eur": 17500000,
                "quality_factor": 0.6058,
                "boost_factor": 1.0036,
                "reference_quality": 0.505,
                "history_matches": 37,
                "history_shrink": 0.119,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0134)",
              "stats": {
                "interceptions": 0.2995,
                "tackles": 0.5003,
                "tackles_won": 0.3952,
                "clearances": 1.2746,
                "aerial_won": 0.3154,
                "total_shots": 0.1498,
                "rating": 6.7657,
                "minutes": 24.81,
                "total_pass": 12.0258,
                "accurate_pass": 10.3256,
                "duels_won": 0.9143,
                "total_long_balls": 1.5308,
                "accurate_long_balls": 0.5544,
                "total_own_half_passes": 6.8268,
                "accurate_own_half_passes": 5.9918,
                "total_opp_half_passes": 5.199,
                "accurate_opp_half_passes": 4.3338,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 17.9027,
                "possession_lost": 2.6209,
                "dispossessed": 0.0,
                "duels_lost": 1.1039,
                "aerial_lost": 0.1746,
                "total_contest": 0.3008,
                "won_contest": 0.0,
                "ball_recovery": 0.6565,
                "challenges_lost": 0.2746,
                "fouls": 0.3506,
                "fouls_drawn": 0.4822,
                "blocks": 0.2054,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0021,
                "expected_assists": 0.0032,
                "shots_on_target": 0.0014,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.672,
                "total_progression": 1.7691,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1504
              },
              "params": {
                "blend_weight": 0.0134,
                "history_matches": 37,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2757,
                "prior_reliability": 0.1733,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.4873,
                  "after": 0.4822
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 24.8 to 10.3 expected minutes (appearance prob 0.33)",
              "stats": {
                "interceptions": 0.1239,
                "tackles": 0.2069,
                "tackles_won": 0.1634,
                "clearances": 0.5271,
                "aerial_won": 0.1304,
                "total_shots": 0.0628,
                "rating": 6.7657,
                "minutes": 10.26,
                "total_pass": 4.9732,
                "accurate_pass": 4.2701,
                "duels_won": 0.3781,
                "total_long_balls": 0.6331,
                "accurate_long_balls": 0.2293,
                "total_own_half_passes": 2.8232,
                "accurate_own_half_passes": 2.4779,
                "total_opp_half_passes": 2.15,
                "accurate_opp_half_passes": 1.7922,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.4035,
                "possession_lost": 1.0839,
                "dispossessed": 0.0,
                "duels_lost": 0.4565,
                "aerial_lost": 0.1746,
                "total_contest": 0.1244,
                "won_contest": 0.0,
                "ball_recovery": 0.2715,
                "challenges_lost": 0.2746,
                "fouls": 0.145,
                "fouls_drawn": 0.1994,
                "blocks": 0.0849,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0009,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0006,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.2779,
                "total_progression": 0.7316,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0622,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 10.26
              },
              "params": {
                "expected_minutes": 10.26,
                "projection_minutes": 24.81,
                "minutes_scale": 0.4135,
                "appearance_probability": 0.327
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.1239,
                "tackles": 0.2069,
                "tackles_won": 0.1634,
                "clearances": 0.5271,
                "aerial_won": 0.1304,
                "total_shots": 0.0628,
                "rating": 6.7657,
                "minutes": 10.26,
                "total_pass": 4.9732,
                "accurate_pass": 4.2701,
                "duels_won": 0.3781,
                "total_long_balls": 0.6331,
                "accurate_long_balls": 0.2293,
                "total_own_half_passes": 2.8232,
                "accurate_own_half_passes": 2.4779,
                "total_opp_half_passes": 2.15,
                "accurate_opp_half_passes": 1.7922,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.4035,
                "possession_lost": 1.0839,
                "dispossessed": 0.0,
                "duels_lost": 0.4565,
                "aerial_lost": 0.1746,
                "total_contest": 0.1244,
                "won_contest": 0.0,
                "ball_recovery": 0.2715,
                "challenges_lost": 0.2746,
                "fouls": 0.145,
                "fouls_drawn": 0.1994,
                "blocks": 0.0849,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0009,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0006,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.2779,
                "total_progression": 0.7316,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0622,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 10.26
              },
              "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.1239,
                "tackles": 0.2069,
                "tackles_won": 0.1634,
                "clearances": 0.5271,
                "aerial_won": 0.1304,
                "total_shots": 0.0628,
                "rating": 6.7657,
                "minutes": 10.26,
                "total_pass": 4.9732,
                "accurate_pass": 4.2701,
                "duels_won": 0.3781,
                "total_long_balls": 0.6331,
                "accurate_long_balls": 0.2293,
                "total_own_half_passes": 2.8232,
                "accurate_own_half_passes": 2.4779,
                "total_opp_half_passes": 2.15,
                "accurate_opp_half_passes": 1.7922,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.4035,
                "possession_lost": 1.0839,
                "dispossessed": 0.0,
                "duels_lost": 0.4565,
                "aerial_lost": 0.1746,
                "total_contest": 0.1244,
                "won_contest": 0.0,
                "ball_recovery": 0.2715,
                "challenges_lost": 0.2746,
                "fouls": 0.145,
                "fouls_drawn": 0.1994,
                "blocks": 0.0849,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0009,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0006,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.2779,
                "total_progression": 0.7316,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0622,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 10.26,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.327,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 76.0)",
              "stats": {
                "interceptions": 0.1239,
                "tackles": 0.2069,
                "tackles_won": 0.1634,
                "clearances": 0.5271,
                "aerial_won": 0.1304,
                "total_shots": 0.0628,
                "rating": 6.7657,
                "minutes": 10.26,
                "total_pass": 4.9732,
                "accurate_pass": 4.2701,
                "duels_won": 0.3781,
                "total_long_balls": 0.6331,
                "accurate_long_balls": 0.2293,
                "total_own_half_passes": 2.8232,
                "accurate_own_half_passes": 2.4779,
                "total_opp_half_passes": 2.15,
                "accurate_opp_half_passes": 1.7922,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.4035,
                "possession_lost": 1.0839,
                "dispossessed": 0.0,
                "duels_lost": 0.4565,
                "aerial_lost": 0.1746,
                "total_contest": 0.1244,
                "won_contest": 0.0,
                "ball_recovery": 0.2715,
                "challenges_lost": 0.2746,
                "fouls": 0.145,
                "fouls_drawn": 0.1994,
                "blocks": 0.0849,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0009,
                "expected_assists": 0.0013,
                "shots_on_target": 0.0006,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.2779,
                "total_progression": 0.7316,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0622,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 10.26,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3352,
                "fifa_rank": 1988.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            }
          ]
        },
        "Abdoulaye Faye": {
          "player_id": 1529051,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 191,
          "market_value": 4200000,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.754,
            "minutes": 14,
            "total_pass": 25,
            "accurate_pass": 24,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 18,
            "accurate_own_half_passes": 18,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 31,
            "possession_lost": 0.7473,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0015,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 6,
            "total_progression": 1,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.218,
            "bench_expected_minutes": 13.63,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.247,
            "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": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.002,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 32,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 6,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 4920,
            "combined_rank_score": 3016.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 996.0,
            "sofascore_rating": 6.1,
            "sofascore_appearances": 1.0,
            "fifa_rank": 5036.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.754,
            "source_file": "data/player_rankings.csv",
            "player_name": "Abdoulaye Faye",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Peter Vindahl",
                  "ranking": 4915
                },
                {
                  "player_name": "Igoh Ogbu",
                  "ranking": 4916
                },
                {
                  "player_name": "Jakub Markovič",
                  "ranking": 4917
                },
                {
                  "player_name": "Matěj Ryneš",
                  "ranking": 4918
                },
                {
                  "player_name": "Patrik Vydra",
                  "ranking": 4919
                }
              ],
              "lower": [
                {
                  "player_name": "Pedrinho",
                  "ranking": 4921
                },
                {
                  "player_name": "Dmytro Riznyk",
                  "ranking": 4922
                },
                {
                  "player_name": "Gilberto Mora",
                  "ranking": 4923
                },
                {
                  "player_name": "Armando González",
                  "ranking": 4924
                },
                {
                  "player_name": "Joaquim",
                  "ranking": 4925
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.317,
          "history_matches": 1,
          "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": 1,
            "data_confidence": 0.317,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 13.631139321914329,
            "bench_appearance_prob": 0.218,
            "market_value_adjustment": 0.9868,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "Bench projection scaled from XGBoost D_service (1 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.4151,
                "tackles": 0.6971,
                "tackles_won": 0.4288,
                "clearances": 1.3818,
                "aerial_won": 0.6426,
                "total_shots": 0.135,
                "rating": 6.754,
                "minutes": 18.0,
                "total_pass": 33.0,
                "accurate_pass": 32.0,
                "duels_won": 1.0,
                "total_long_balls": 1.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 24.0,
                "accurate_own_half_passes": 24.0,
                "total_opp_half_passes": 9.0,
                "accurate_opp_half_passes": 8.0,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 41.0,
                "possession_lost": 1.0,
                "dispossessed": 0.0,
                "duels_lost": 2.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.0,
                "challenges_lost": 1.0,
                "fouls": 1.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.002,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.0,
                "total_progression": 1.5655,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.135
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 1.0,
                    "rating": 6.1
                  }
                ],
                "feature_row": {
                  "history_matches": 1.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 6.0,
                  "aerialWon": 0.0,
                  "totalClearance_p90": 12.0,
                  "totalTackle": 1.0,
                  "defensive_actions": 2.0
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.4150530993938446,
                    "model_output": 0.4151,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4928
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0205
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0185
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0123
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0111
                        }
                      ],
                      "others": 0.0314,
                      "total": 0.4151,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.849675
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.054097
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.046403
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.03069
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.028631
                        }
                      ],
                      "others_margin": 0.078954
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.697130560874939,
                    "model_output": 0.6971,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7977
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0491
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0301
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0229
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0226
                        }
                      ],
                      "others": -0.0214,
                      "total": 0.6971,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.851548
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.079489
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.045699
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.033392
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.031933
                        }
                      ],
                      "others_margin": -0.030133
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.42875435948371887,
                    "model_output": 0.4288,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.482
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0314
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": -0.0182
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0172
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0146
                        }
                      ],
                      "others": 0.0752,
                      "total": 0.4288,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.830778
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.081089
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": -0.04606
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.045555
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.040427
                        }
                      ],
                      "others_margin": 0.192489
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.3818200826644897,
                    "model_output": 1.3818,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.2749
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.3538
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.2212
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1349
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0684
                        }
                      ],
                      "others": 0.0249,
                      "total": 1.3818,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.086799
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.266636
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.158214
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.09941
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.049153
                        }
                      ],
                      "others_margin": 0.018166
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.6426026821136475,
                    "model_output": 0.6426,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8345
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1253
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.053
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0459
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0476
                        }
                      ],
                      "others": 0.0786,
                      "total": 0.6426,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.931174
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.262576
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.119478
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.09315
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.088206
                        }
                      ],
                      "others_margin": 0.130552
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.13502274453639984,
                    "model_output": 0.135,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1955
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0608
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0208
                        },
                        {
                          "name": "history_matches",
                          "contribution": -0.0147
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0104
                        }
                      ],
                      "others": -0.0373,
                      "total": 0.135,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.195508
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.060809
                        },
                        {
                          "name": "rating",
                          "margin": -0.020786
                        },
                        {
                          "name": "history_matches",
                          "margin": -0.014656
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.010395
                        }
                      ],
                      "others_margin": -0.037324
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.754028797149658,
                    "model_output": 6.754,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "touches_p90",
                          "contribution": 0.0256
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0209
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0203
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": -0.013
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0113
                        }
                      ],
                      "others": -0.0314,
                      "total": 6.754,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": 0.025561
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.020894
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.020252
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": -0.012984
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": -0.011321
                        }
                      ],
                      "others_margin": -0.03129
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 1,
                  "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.9868, quality 0.452)",
              "stats": {
                "interceptions": 0.4096,
                "tackles": 0.6879,
                "tackles_won": 0.4231,
                "clearances": 1.3636,
                "aerial_won": 0.6341,
                "total_shots": 0.1332,
                "rating": 6.754,
                "minutes": 18.0,
                "total_pass": 32.5644,
                "accurate_pass": 31.5776,
                "duels_won": 0.9868,
                "total_long_balls": 0.9868,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 23.6832,
                "accurate_own_half_passes": 23.6832,
                "total_opp_half_passes": 8.8812,
                "accurate_opp_half_passes": 7.8944,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 40.4588,
                "possession_lost": 0.9868,
                "dispossessed": 0.0,
                "duels_lost": 1.9736,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.9736,
                "challenges_lost": 0.9868,
                "fouls": 0.9868,
                "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.002,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.8944,
                "total_progression": 1.5448,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1332
              },
              "params": {
                "market_value_eur": 4200000,
                "quality_factor": 0.4523,
                "boost_factor": 0.9868,
                "reference_quality": 0.505,
                "history_matches": 1,
                "history_shrink": 0.8333,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0180)",
              "stats": {
                "interceptions": 0.4094,
                "tackles": 0.6879,
                "tackles_won": 0.4155,
                "clearances": 1.3636,
                "aerial_won": 0.6341,
                "total_shots": 0.1308,
                "rating": 6.754,
                "minutes": 18.0,
                "total_pass": 32.5644,
                "accurate_pass": 31.5776,
                "duels_won": 0.9868,
                "total_long_balls": 0.9868,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 23.6832,
                "accurate_own_half_passes": 23.6832,
                "total_opp_half_passes": 8.8812,
                "accurate_opp_half_passes": 7.8944,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 40.4588,
                "possession_lost": 0.9868,
                "dispossessed": 0.0,
                "duels_lost": 1.9736,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.9736,
                "challenges_lost": 0.9868,
                "fouls": 0.9762,
                "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.002,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.8944,
                "total_progression": 1.5448,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1332
              },
              "params": {
                "blend_weight": 0.018,
                "history_matches": 1,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2,
                "prior_reliability": 0.0333,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.9868,
                  "after": 0.9762
                },
                {
                  "stat": "wonTackle",
                  "before": 0.4231,
                  "after": 0.4155
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.0 to 13.6 expected minutes (appearance prob 0.22)",
              "stats": {
                "interceptions": 0.31,
                "tackles": 0.5209,
                "tackles_won": 0.3147,
                "clearances": 1.0326,
                "aerial_won": 0.4802,
                "total_shots": 0.1009,
                "rating": 6.754,
                "minutes": 13.63,
                "total_pass": 24.6605,
                "accurate_pass": 23.9133,
                "duels_won": 0.7473,
                "total_long_balls": 0.7473,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 17.9349,
                "accurate_own_half_passes": 17.9349,
                "total_opp_half_passes": 6.7256,
                "accurate_opp_half_passes": 5.9783,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 30.6389,
                "possession_lost": 0.7473,
                "dispossessed": 0.0,
                "duels_lost": 1.4946,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.4946,
                "challenges_lost": 0.9868,
                "fouls": 0.7393,
                "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.0015,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9783,
                "total_progression": 1.1699,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1009,
                "bench_appearance_probability": 0.218,
                "bench_expected_minutes": 13.63
              },
              "params": {
                "expected_minutes": 13.63,
                "projection_minutes": 18.0,
                "minutes_scale": 0.7573,
                "appearance_probability": 0.218
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.31,
                "tackles": 0.5209,
                "tackles_won": 0.3147,
                "clearances": 1.0326,
                "aerial_won": 0.4802,
                "total_shots": 0.1009,
                "rating": 6.754,
                "minutes": 13.63,
                "total_pass": 24.6605,
                "accurate_pass": 23.9133,
                "duels_won": 0.7473,
                "total_long_balls": 0.7473,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 17.9349,
                "accurate_own_half_passes": 17.9349,
                "total_opp_half_passes": 6.7256,
                "accurate_opp_half_passes": 5.9783,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 30.6389,
                "possession_lost": 0.7473,
                "dispossessed": 0.0,
                "duels_lost": 1.4946,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.4946,
                "challenges_lost": 0.9868,
                "fouls": 0.7393,
                "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.0015,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9783,
                "total_progression": 1.1699,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1009,
                "bench_appearance_probability": 0.218,
                "bench_expected_minutes": 13.63
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.31,
                "tackles": 0.5209,
                "tackles_won": 0.3147,
                "clearances": 1.0326,
                "aerial_won": 0.4802,
                "total_shots": 0.1009,
                "rating": 6.754,
                "minutes": 13.63,
                "total_pass": 24.6605,
                "accurate_pass": 23.9133,
                "duels_won": 0.7473,
                "total_long_balls": 0.7473,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 17.9349,
                "accurate_own_half_passes": 17.9349,
                "total_opp_half_passes": 6.7256,
                "accurate_opp_half_passes": 5.9783,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 30.6389,
                "possession_lost": 0.7473,
                "dispossessed": 0.0,
                "duels_lost": 1.4946,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.4946,
                "challenges_lost": 0.9868,
                "fouls": 0.7393,
                "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.0015,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9783,
                "total_progression": 1.1699,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1009,
                "bench_appearance_probability": 0.218,
                "bench_expected_minutes": 13.63,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.218,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 71.0)",
              "stats": {
                "interceptions": 0.31,
                "tackles": 0.5209,
                "tackles_won": 0.3147,
                "clearances": 1.0326,
                "aerial_won": 0.4802,
                "total_shots": 0.1009,
                "rating": 6.754,
                "minutes": 13.63,
                "total_pass": 24.6605,
                "accurate_pass": 23.9133,
                "duels_won": 0.7473,
                "total_long_balls": 0.7473,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 17.9349,
                "accurate_own_half_passes": 17.9349,
                "total_opp_half_passes": 6.7256,
                "accurate_opp_half_passes": 5.9783,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 30.6389,
                "possession_lost": 0.7473,
                "dispossessed": 0.0,
                "duels_lost": 1.4946,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.4946,
                "challenges_lost": 0.9868,
                "fouls": 0.7393,
                "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.0015,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9783,
                "total_progression": 1.1699,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1009,
                "bench_appearance_probability": 0.218,
                "bench_expected_minutes": 13.63,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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": 13,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4920,
                "fifa_rank": 5036.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            }
          ]
        },
        "Fer López": {
          "player_id": 1526628,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 8,
          "height": 186,
          "market_value": 17500000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0351,
            "assist_rate": 0.0731,
            "assists": 0,
            "expected_goals": 0.0277,
            "goal_rate": 0.0535,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7464,
            "minutes": 23,
            "total_pass": 10,
            "accurate_pass": 8,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 15,
            "possession_lost": 3.7141,
            "dispossessed": 0.4872,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "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.0829,
            "ball_carries": 4,
            "total_progression": 29,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.529,
            "bench_expected_minutes": 22.64,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.247,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.027,
            "projected_assists": 0,
            "assist_probability": 0.034,
            "finishing_factor": 1.0692,
            "creation_factor": 1.1273,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 74,
                "rating": 8.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.4877,
                "expected_assists": 0.2606,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 54,
                "accurate_pass": 53,
                "key_pass": 4,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 1,
                "duels_won": 12,
                "ball_recovery": 14
              },
              "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": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 89,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0466,
                "expected_assists": 0.0271,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 39,
                "accurate_pass": 34,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 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"
            },
            {
              "match_id": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2211,
                "expected_assists": 0.0494,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 58,
                "accurate_pass": 55,
                "interceptions": 1,
                "clearances": 1,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083551,
              "match_date": "2026-05-09",
              "home_team": "Atlético Madrid",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1732,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 32,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083401,
              "match_date": "2026-05-03",
              "home_team": "Celta Vigo",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1851,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 6
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083248,
              "match_date": "2026-04-26",
              "home_team": "Villarreal",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 14,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083261,
              "match_date": "2026-04-22",
              "home_team": "FC Barcelona",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 81,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.251,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 34,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083123,
              "match_date": "2026-04-12",
              "home_team": "Celta Vigo",
              "away_team": "Real Oviedo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2941,
                "expected_assists": 0.1083,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 70,
                "accurate_pass": 58,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081817,
              "match_date": "2026-04-05",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 45,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1759,
                "expected_assists": 0.0253,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083689,
              "match_date": "2026-03-22",
              "home_team": "Celta Vigo",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 36,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2046,
                "expected_assists": 0.0137,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 16,
                "accurate_pass": 14,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3941,
            "combined_rank_score": 1921.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 563.0,
            "sofascore_rating": 6.8118,
            "sofascore_appearances": 17.0,
            "fifa_rank": 3280.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7464,
            "source_file": "data/player_rankings.csv",
            "player_name": "Fer López",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Giovanni Reyna",
                  "ranking": 3936
                },
                {
                  "player_name": "Nicolò Fagioli",
                  "ranking": 3937
                },
                {
                  "player_name": "Portu",
                  "ranking": 3938
                },
                {
                  "player_name": "Saúl Coco",
                  "ranking": 3939
                },
                {
                  "player_name": "Jonathan Rowe",
                  "ranking": 3940
                }
              ],
              "lower": [
                {
                  "player_name": "Andy Diouf",
                  "ranking": 3942
                },
                {
                  "player_name": "Ignacio Vazquez",
                  "ranking": 3943
                },
                {
                  "player_name": "Nicolò Cambiaghi",
                  "ranking": 3944
                },
                {
                  "player_name": "Joan Jordán",
                  "ranking": 3945
                },
                {
                  "player_name": "Arthur Atta",
                  "ranking": 3946
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 26,
          "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": 26,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.638908710234563,
            "bench_appearance_prob": 0.5290413050106619,
            "market_value_adjustment": 1.0049,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (26 historical appearances) to 22.6 expected mins (appearance prob 0.53)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.6684,
                "expected_assists": 0.0597,
                "assists": 0.0737,
                "assist_rate": 0.0737,
                "expected_goals": 0.0473,
                "goals": 0.054,
                "goal_rate": 0.054,
                "shots_on_target": 0.1408,
                "total_shots": 0.4745,
                "rating": 6.7464,
                "minutes": 22.96,
                "total_pass": 10.1668,
                "accurate_pass": 7.7987,
                "duels_won": 1.107,
                "total_long_balls": 1.2229,
                "accurate_long_balls": 0.6353,
                "total_own_half_passes": 2.7421,
                "accurate_own_half_passes": 1.9495,
                "total_opp_half_passes": 7.4247,
                "accurate_opp_half_passes": 5.8492,
                "crosses_total": 0.1518,
                "crosses_accurate": 0.0,
                "touches": 15.0819,
                "possession_lost": 3.7484,
                "dispossessed": 0.4848,
                "duels_lost": 1.5531,
                "aerial_won": 0.0578,
                "aerial_lost": 0.278,
                "interceptions": 0.2638,
                "tackles_won": 0.1531,
                "tackles": 0.2833,
                "clearances": 0.1302,
                "total_contest": 0.6674,
                "won_contest": 0.5,
                "challenges_lost": 0.1034,
                "fouls": 0.6496,
                "fouls_drawn": 0.266,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1411,
                "ball_carries": 4.5327,
                "total_progression": 28.8218,
                "progressive_carries": 0.5573,
                "shots_off_target": 0.3337
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1522,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1294,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.11,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0935,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0795,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Villarreal",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0675,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-22",
                    "opponent": "FC Barcelona",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0574,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Real Oviedo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0488,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-05",
                    "opponent": "Valencia",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0415,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Deportivo Alavés",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.0353,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.8666,
                  "creative_index": 0.464,
                  "expectedGoals": 0.1369,
                  "expectedAssists": 0.1101,
                  "onTargetScoringAttempt": 0.3675
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6684153079986572,
                    "model_output": 0.6684,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3462
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0558
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0191
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0159
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0157
                        }
                      ],
                      "others": 0.0533,
                      "total": 0.6684,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.490508
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.09711
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.032263
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.026807
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.025929
                        }
                      ],
                      "others_margin": 0.083268
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05965816602110863,
                    "model_output": 0.0597,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0348
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0032
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0028
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0028
                        },
                        {
                          "name": "goalAssist",
                          "contribution": 0.0023
                        }
                      ],
                      "others": 0.0034,
                      "total": 0.0597,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.521724
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.060742
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.050843
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.049747
                        },
                        {
                          "name": "goalAssist",
                          "margin": 0.042079
                        }
                      ],
                      "others_margin": 0.056285
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07373261451721191,
                    "model_output": 0.0737,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.018
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0069
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0062
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0052
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0049
                        }
                      ],
                      "others": 0.0075,
                      "total": 0.0737,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.230562
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.104173
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.103847
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.088482
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.076766
                        }
                      ],
                      "others_margin": 0.105096
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0473075695335865,
                    "model_output": 0.0473,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0408
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0131
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0051
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0032
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0084,
                      "total": 0.0473,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.566231
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.218872
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07955
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.053311
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.045353
                        }
                      ],
                      "others_margin": -0.164184
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05401263013482094,
                    "model_output": 0.054,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0336
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0111
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0102
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0037
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.0044,
                      "total": 0.054,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.421055
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.159192
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.146077
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.058669
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.04946
                        }
                      ],
                      "others_margin": -0.077523
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14078646898269653,
                    "model_output": 0.1408,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1649
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0273
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0149
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0075
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0064
                        }
                      ],
                      "others": -0.0185,
                      "total": 0.1408,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.705717
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.156633
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.082688
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.044355
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.039429
                        }
                      ],
                      "others_margin": -0.123266
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4744437038898468,
                    "model_output": 0.4744,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.406
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0399
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0308
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0269
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0252
                        }
                      ],
                      "others": -0.0721,
                      "total": 0.4744,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.405967
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.039905
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.030772
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.026899
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.025218
                        }
                      ],
                      "others_margin": -0.07214
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.746386528015137,
                    "model_output": 6.7464,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0982
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0677
                        },
                        {
                          "name": "rating",
                          "contribution": -0.027
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0209
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0189
                        }
                      ],
                      "others": -0.0094,
                      "total": 6.7464,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.098233
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.067692
                        },
                        {
                          "name": "rating",
                          "margin": -0.026953
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.020859
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.018913
                        }
                      ],
                      "others_margin": -0.009406
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 26,
                  "role_matches": 11,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0049, quality 0.606)",
              "stats": {
                "key_pass": 0.6717,
                "expected_assists": 0.06,
                "assists": 0.0741,
                "assist_rate": 0.0741,
                "expected_goals": 0.0475,
                "goals": 0.0543,
                "goal_rate": 0.0543,
                "shots_on_target": 0.1415,
                "total_shots": 0.4768,
                "rating": 6.7464,
                "minutes": 22.96,
                "total_pass": 10.2166,
                "accurate_pass": 7.8369,
                "duels_won": 1.1124,
                "total_long_balls": 1.2289,
                "accurate_long_balls": 0.6384,
                "total_own_half_passes": 2.7555,
                "accurate_own_half_passes": 1.9591,
                "total_opp_half_passes": 7.4611,
                "accurate_opp_half_passes": 5.8779,
                "crosses_total": 0.1525,
                "crosses_accurate": 0.0,
                "touches": 15.1558,
                "possession_lost": 3.7668,
                "dispossessed": 0.4872,
                "duels_lost": 1.5607,
                "aerial_won": 0.0581,
                "aerial_lost": 0.2794,
                "interceptions": 0.2651,
                "tackles_won": 0.1539,
                "tackles": 0.2847,
                "clearances": 0.1308,
                "total_contest": 0.6707,
                "won_contest": 0.5024,
                "challenges_lost": 0.1039,
                "fouls": 0.6528,
                "fouls_drawn": 0.2673,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1418,
                "ball_carries": 4.5549,
                "total_progression": 28.963,
                "progressive_carries": 0.56,
                "shots_off_target": 0.3353
              },
              "params": {
                "market_value_eur": 17500000,
                "quality_factor": 0.6058,
                "boost_factor": 1.0049,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.0 to 22.6 expected minutes (appearance prob 0.53)",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0592,
                "assists": 0.0731,
                "assist_rate": 0.0731,
                "expected_goals": 0.0468,
                "goals": 0.0535,
                "goal_rate": 0.0535,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1398,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64
              },
              "params": {
                "expected_minutes": 22.64,
                "projection_minutes": 22.96,
                "minutes_scale": 0.986,
                "appearance_probability": 0.529
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0592,
                "assists": 0.0731,
                "assist_rate": 0.0731,
                "expected_goals": 0.0468,
                "goals": 0.0535,
                "goal_rate": 0.0535,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1398,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0592,
                "assist_rate": 0.0731,
                "assists": 0,
                "expected_goals": 0.0468,
                "goal_rate": 0.0535,
                "goals": 0,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1398,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0351,
                "assist_rate": 0.0731,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0535,
                "goals": 0,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0829,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.0692,
                "creation_factor": 1.1273
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 0.529
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0468,
                  "after": 0.0277
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0592,
                  "after": 0.0351
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0351,
                "assist_rate": 0.0731,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0535,
                "goals": 0,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0829,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.0692,
                "creation_factor": 1.1273,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3941,
                "fifa_rank": 3280.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0351,
                "assist_rate": 0.0731,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0535,
                "goals": 0,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0829,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.027,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0692,
                "creation_factor": 1.1273,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.027,
                "goal_rate": 0.0535,
                "scorer_weight": 0.0296,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0324,
                "finishing_factor": 1.0692,
                "appearance_weight": 0.529,
                "weight_rank": 8,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0351,
                "assist_rate": 0.0731,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0535,
                "goals": 0,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0829,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.027,
                "projected_assists": 0,
                "assist_probability": 0.034,
                "finishing_factor": 1.0692,
                "creation_factor": 1.1273,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.034,
                "assist_rate": 0.0731,
                "provider_weight": 0.0396,
                "squad_weight_total": 0.6035,
                "weight_share": 0.0656,
                "creation_factor": 1.1273,
                "appearance_weight": 0.529,
                "weight_rank": 8,
                "eligible_players": 12
              }
            }
          ]
        },
        "Miguel Román": {
          "player_id": 1398526,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 8,
          "height": 178,
          "market_value": 14400000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0894,
            "assist_rate": 0.1065,
            "assists": 0,
            "expected_goals": 0.0426,
            "goal_rate": 0.0638,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.9811,
            "minutes": 35,
            "total_pass": 31,
            "accurate_pass": 27,
            "duels_won": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 9,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 18,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 37,
            "possession_lost": 5.2801,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 0,
            "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.1047,
            "ball_carries": 16,
            "total_progression": 73,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.414,
            "bench_expected_minutes": 34.88,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.247,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 84,
                "rating": 8.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0663,
                "expected_assists": 0.0342,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 56,
                "accurate_pass": 49,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 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": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0717,
                "expected_assists": 0.0986,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 62,
                "accurate_pass": 55,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 1,
                "aerial_won": 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": 16416348,
              "match_date": "2026-09-07",
              "home_team": "Getafe",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0427,
                "expected_assists": 0.0686,
                "total_shots": 3,
                "total_pass": 57,
                "accurate_pass": 46,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416340,
              "match_date": "2026-09-03",
              "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_assists": 0.0427,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 33,
                "clearances": 2,
                "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": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1388,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 37,
                "key_pass": 2,
                "tackles": 1,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0334,
                "total_shots": 0,
                "total_pass": 76,
                "accurate_pass": 70,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 1,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3443,
                "total_shots": 0,
                "total_pass": 85,
                "accurate_pass": 77,
                "key_pass": 2,
                "clearances": 1,
                "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": 14083607,
              "match_date": "2026-03-06",
              "home_team": "Celta Vigo",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1043,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 48,
                "key_pass": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081797,
              "match_date": "2026-03-01",
              "home_team": "Girona FC",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0313,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 38,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 6
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083577,
              "match_date": "2026-02-22",
              "home_team": "Celta Vigo",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0922,
                "total_shots": 0,
                "total_pass": 55,
                "accurate_pass": 49,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3643,
            "combined_rank_score": 1606.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 292.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 4.0,
            "fifa_rank": 2921.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9811,
            "source_file": "data/player_rankings.csv",
            "player_name": "Miguel Román",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nélson Semedo",
                  "ranking": 3638
                },
                {
                  "player_name": "Jan Kuchta",
                  "ranking": 3639
                },
                {
                  "player_name": "Rodrigo Mora",
                  "ranking": 3640
                },
                {
                  "player_name": "Milan van Ewijk",
                  "ranking": 3641
                },
                {
                  "player_name": "William Gomes",
                  "ranking": 3642
                }
              ],
              "lower": [
                {
                  "player_name": "João Moutinho",
                  "ranking": 3644
                },
                {
                  "player_name": "Tom Cairney",
                  "ranking": 3645
                },
                {
                  "player_name": "Mads Hermansen",
                  "ranking": 3646
                },
                {
                  "player_name": "Pepê",
                  "ranking": 3647
                },
                {
                  "player_name": "Finn Azaz",
                  "ranking": 3648
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.785,
          "history_matches": 26,
          "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": 26,
            "data_confidence": 0.785,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 34.88,
            "bench_appearance_prob": 0.414,
            "market_value_adjustment": 1.0033,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 4.0,
              "starts": 3.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 45.0,
              "goals_per90": 0.0,
              "assists_per90": 0.2857142857142857,
              "prior_reliability": 0.2333
            },
            "rationale": "Bench projection scaled from XGBoost M_service (26 historical appearances) to 34.9 expected mins (appearance prob 0.41); FBref playing time empirical prior: 1.0 sub appearances, 45.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.588,
                "expected_assists": 0.0594,
                "assists": 0.0708,
                "assist_rate": 0.0708,
                "expected_goals": 0.0283,
                "goals": 0.0434,
                "goal_rate": 0.0434,
                "shots_on_target": 0.1472,
                "total_shots": 0.4242,
                "rating": 6.9811,
                "minutes": 22.45,
                "total_pass": 20.3211,
                "accurate_pass": 17.7316,
                "duels_won": 1.6967,
                "total_long_balls": 1.8322,
                "accurate_long_balls": 0.9272,
                "total_own_half_passes": 6.1778,
                "accurate_own_half_passes": 5.5844,
                "total_opp_half_passes": 14.1433,
                "accurate_opp_half_passes": 12.1472,
                "crosses_total": 0.7225,
                "crosses_accurate": 0.4817,
                "touches": 24.477,
                "possession_lost": 3.5085,
                "dispossessed": 0.0,
                "duels_lost": 1.522,
                "aerial_won": 0.0,
                "aerial_lost": 0.1479,
                "interceptions": 0.1257,
                "tackles_won": 0.4783,
                "tackles": 1.041,
                "clearances": 0.0,
                "total_contest": 0.4455,
                "won_contest": 0.2408,
                "challenges_lost": 0.7628,
                "fouls": 0.4066,
                "fouls_drawn": 0.4148,
                "blocks": 0.0,
                "big_chances_created": 0.2696,
                "big_chances_missed": 0.0,
                "xgot": 0.0696,
                "ball_carries": 10.7619,
                "total_progression": 48.6502,
                "progressive_carries": 0.3304,
                "shots_off_target": 0.277
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Real Racing Club",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1522,
                    "rating": 8.9
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1294,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-07",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.11,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-03",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0935,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0795,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0675,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0574,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-03-06",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0488,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-01",
                    "opponent": "Girona FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0415,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-02-22",
                    "opponent": "Mallorca",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0353,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.9468,
                  "creative_index": 0.4269,
                  "expectedGoals": 0.0277,
                  "expectedAssists": 0.0932,
                  "onTargetScoringAttempt": 0.1558
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5879523158073425,
                    "model_output": 0.588,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3897
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0272
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0223
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0172
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0167
                        }
                      ],
                      "others": 0.0557,
                      "total": 0.588,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.573454
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.055494
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.045798
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.033933
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.0318
                        }
                      ],
                      "others_margin": 0.099496
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05936014652252197,
                    "model_output": 0.0594,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0346
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0047
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0031
                        },
                        {
                          "name": "goalAssist",
                          "contribution": 0.0024
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0021
                        }
                      ],
                      "others": -0.0039,
                      "total": 0.0594,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.517997
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.088868
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.054253
                        },
                        {
                          "name": "goalAssist",
                          "margin": 0.040191
                        },
                        {
                          "name": "rating",
                          "margin": 0.034429
                        }
                      ],
                      "others_margin": -0.066275
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07078178972005844,
                    "model_output": 0.0708,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0221
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0057
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0041
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0041
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0036
                        }
                      ],
                      "others": 0.0036,
                      "total": 0.0708,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.292448
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.084156
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.056626
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.056355
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.05165
                        }
                      ],
                      "others_margin": 0.05059
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.02831444889307022,
                    "model_output": 0.0283,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0386
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0169
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0016
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0011
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.001
                        }
                      ],
                      "others": -0.0068,
                      "total": 0.0283,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.526238
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.361977
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.041423
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.029963
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.028096
                        }
                      ],
                      "others_margin": -0.215361
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.04341447353363037,
                    "model_output": 0.0434,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0368
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0088
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0055
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0037
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0019
                        }
                      ],
                      "others": -0.0015,
                      "total": 0.0434,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.47161
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.155966
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.111546
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.083129
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.044083
                        }
                      ],
                      "others_margin": -0.033849
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14716002345085144,
                    "model_output": 0.1472,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1484
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0191
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0074
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0072
                        },
                        {
                          "name": "rating",
                          "contribution": 0.007
                        }
                      ],
                      "others": -0.0182,
                      "total": 0.1472,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.60798
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.11416
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.045892
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.044547
                        },
                        {
                          "name": "rating",
                          "margin": 0.043034
                        }
                      ],
                      "others_margin": -0.116786
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.42413318157196045,
                    "model_output": 0.4241,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4163
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0302
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0278
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0226
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0226
                        }
                      ],
                      "others": -0.1527,
                      "total": 0.4241,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.416347
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.030174
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.027839
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.022574
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.022568
                        }
                      ],
                      "others_margin": -0.152713
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.981054306030273,
                    "model_output": 6.9811,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.1337
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.096
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0884
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0162
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0145
                        }
                      ],
                      "others": -0.015,
                      "total": 6.9811,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.133711
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.096027
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.088373
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.016213
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.014466
                        }
                      ],
                      "others_margin": -0.015114
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 26,
                  "role_matches": 6,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0033, quality 0.573)",
              "stats": {
                "key_pass": 0.5899,
                "expected_assists": 0.0596,
                "assists": 0.071,
                "assist_rate": 0.071,
                "expected_goals": 0.0284,
                "goals": 0.0436,
                "goal_rate": 0.0436,
                "shots_on_target": 0.1476,
                "total_shots": 0.4256,
                "rating": 6.9811,
                "minutes": 22.45,
                "total_pass": 20.3882,
                "accurate_pass": 17.7901,
                "duels_won": 1.7023,
                "total_long_balls": 1.8382,
                "accurate_long_balls": 0.9303,
                "total_own_half_passes": 6.1982,
                "accurate_own_half_passes": 5.6028,
                "total_opp_half_passes": 14.19,
                "accurate_opp_half_passes": 12.1873,
                "crosses_total": 0.7249,
                "crosses_accurate": 0.4833,
                "touches": 24.5578,
                "possession_lost": 3.5201,
                "dispossessed": 0.0,
                "duels_lost": 1.527,
                "aerial_won": 0.0,
                "aerial_lost": 0.1484,
                "interceptions": 0.1261,
                "tackles_won": 0.4799,
                "tackles": 1.0444,
                "clearances": 0.0,
                "total_contest": 0.447,
                "won_contest": 0.2416,
                "challenges_lost": 0.7653,
                "fouls": 0.4079,
                "fouls_drawn": 0.4162,
                "blocks": 0.0,
                "big_chances_created": 0.2705,
                "big_chances_missed": 0.0,
                "xgot": 0.0698,
                "ball_carries": 10.7974,
                "total_progression": 48.8107,
                "progressive_carries": 0.3315,
                "shots_off_target": 0.2779
              },
              "params": {
                "market_value_eur": 14400000,
                "quality_factor": 0.5726,
                "boost_factor": 1.0033,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0245)",
              "stats": {
                "key_pass": 0.5899,
                "expected_assists": 0.0596,
                "assists": 0.071,
                "assist_rate": 0.071,
                "expected_goals": 0.0284,
                "goals": 0.0425,
                "goal_rate": 0.0425,
                "shots_on_target": 0.144,
                "total_shots": 0.4152,
                "rating": 6.9811,
                "minutes": 22.45,
                "total_pass": 20.3882,
                "accurate_pass": 17.7901,
                "duels_won": 1.7023,
                "total_long_balls": 1.8382,
                "accurate_long_balls": 0.9303,
                "total_own_half_passes": 6.1982,
                "accurate_own_half_passes": 5.6028,
                "total_opp_half_passes": 14.19,
                "accurate_opp_half_passes": 12.1873,
                "crosses_total": 0.7298,
                "crosses_accurate": 0.4833,
                "touches": 24.5578,
                "possession_lost": 3.5201,
                "dispossessed": 0.0,
                "duels_lost": 1.527,
                "aerial_won": 0.0,
                "aerial_lost": 0.1484,
                "interceptions": 0.1248,
                "tackles_won": 0.4682,
                "tackles": 1.0444,
                "clearances": 0.0,
                "total_contest": 0.447,
                "won_contest": 0.2416,
                "challenges_lost": 0.7653,
                "fouls": 0.4014,
                "fouls_drawn": 0.4112,
                "blocks": 0.0,
                "big_chances_created": 0.2705,
                "big_chances_missed": 0.0,
                "xgot": 0.0698,
                "ball_carries": 10.7974,
                "total_progression": 48.8107,
                "progressive_carries": 0.3315,
                "shots_off_target": 0.2779
              },
              "params": {
                "blend_weight": 0.0245,
                "history_matches": 26,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2494,
                "prior_reliability": 0.2333,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.4799,
                  "after": 0.4682
                },
                {
                  "stat": "totalShots",
                  "before": 0.4256,
                  "after": 0.4152
                },
                {
                  "stat": "fouls",
                  "before": 0.4079,
                  "after": 0.4014
                },
                {
                  "stat": "wasFouled",
                  "before": 0.4162,
                  "after": 0.4112
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 22.4 to 34.9 expected minutes (appearance prob 0.41)",
              "stats": {
                "key_pass": 0.8848,
                "expected_assists": 0.0894,
                "assists": 0.1065,
                "assist_rate": 0.1065,
                "expected_goals": 0.0426,
                "goals": 0.0638,
                "goal_rate": 0.0638,
                "shots_on_target": 0.216,
                "total_shots": 0.6329,
                "rating": 6.9811,
                "minutes": 34.88,
                "total_pass": 30.5823,
                "accurate_pass": 26.6852,
                "duels_won": 2.5534,
                "total_long_balls": 2.7573,
                "accurate_long_balls": 1.3955,
                "total_own_half_passes": 9.2973,
                "accurate_own_half_passes": 8.4042,
                "total_opp_half_passes": 21.285,
                "accurate_opp_half_passes": 18.281,
                "crosses_total": 1.0947,
                "crosses_accurate": 0.7249,
                "touches": 36.8367,
                "possession_lost": 5.2801,
                "dispossessed": 0.0,
                "duels_lost": 2.2905,
                "aerial_won": 0.0,
                "aerial_lost": 0.1484,
                "interceptions": 0.1872,
                "tackles_won": 0.7023,
                "tackles": 1.5666,
                "clearances": 0.0,
                "total_contest": 0.6705,
                "won_contest": 0.3624,
                "challenges_lost": 0.7653,
                "fouls": 0.6021,
                "fouls_drawn": 0.6168,
                "blocks": 0.0,
                "big_chances_created": 0.4058,
                "big_chances_missed": 0.0,
                "xgot": 0.1047,
                "ball_carries": 16.1961,
                "total_progression": 73.216,
                "progressive_carries": 0.4973,
                "shots_off_target": 0.4168,
                "bench_appearance_probability": 0.414,
                "bench_expected_minutes": 34.88
              },
              "params": {
                "expected_minutes": 34.88,
                "projection_minutes": 22.45,
                "minutes_scale": 1.5,
                "appearance_probability": 0.414
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.8848,
                "expected_assists": 0.0894,
                "assists": 0.1065,
                "assist_rate": 0.1065,
                "expected_goals": 0.0426,
                "goals": 0.0638,
                "goal_rate": 0.0638,
                "shots_on_target": 0.216,
                "total_shots": 0.6329,
                "rating": 6.9811,
                "minutes": 34.88,
                "total_pass": 30.5823,
                "accurate_pass": 26.6852,
                "duels_won": 2.5534,
                "total_long_balls": 2.7573,
                "accurate_long_balls": 1.3955,
                "total_own_half_passes": 9.2973,
                "accurate_own_half_passes": 8.4042,
                "total_opp_half_passes": 21.285,
                "accurate_opp_half_passes": 18.281,
                "crosses_total": 1.0947,
                "crosses_accurate": 0.7249,
                "touches": 36.8367,
                "possession_lost": 5.2801,
                "dispossessed": 0.0,
                "duels_lost": 2.2905,
                "aerial_won": 0.0,
                "aerial_lost": 0.1484,
                "interceptions": 0.1872,
                "tackles_won": 0.7023,
                "tackles": 1.5666,
                "clearances": 0.0,
                "total_contest": 0.6705,
                "won_contest": 0.3624,
                "challenges_lost": 0.7653,
                "fouls": 0.6021,
                "fouls_drawn": 0.6168,
                "blocks": 0.0,
                "big_chances_created": 0.4058,
                "big_chances_missed": 0.0,
                "xgot": 0.1047,
                "ball_carries": 16.1961,
                "total_progression": 73.216,
                "progressive_carries": 0.4973,
                "shots_off_target": 0.4168,
                "bench_appearance_probability": 0.414,
                "bench_expected_minutes": 34.88
              },
              "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.8848,
                "expected_assists": 0.0894,
                "assist_rate": 0.1065,
                "assists": 0,
                "expected_goals": 0.0426,
                "goal_rate": 0.0638,
                "goals": 0,
                "shots_on_target": 0.216,
                "total_shots": 0.6329,
                "rating": 6.9811,
                "minutes": 34.88,
                "total_pass": 30.5823,
                "accurate_pass": 26.6852,
                "duels_won": 2.5534,
                "total_long_balls": 2.7573,
                "accurate_long_balls": 1.3955,
                "total_own_half_passes": 9.2973,
                "accurate_own_half_passes": 8.4042,
                "total_opp_half_passes": 21.285,
                "accurate_opp_half_passes": 18.281,
                "crosses_total": 1.0947,
                "crosses_accurate": 0.7249,
                "touches": 36.8367,
                "possession_lost": 5.2801,
                "dispossessed": 0.0,
                "duels_lost": 2.2905,
                "aerial_won": 0.0,
                "aerial_lost": 0.1484,
                "interceptions": 0.1872,
                "tackles_won": 0.7023,
                "tackles": 1.5666,
                "clearances": 0.0,
                "total_contest": 0.6705,
                "won_contest": 0.3624,
                "challenges_lost": 0.7653,
                "fouls": 0.6021,
                "fouls_drawn": 0.6168,
                "blocks": 0.0,
                "big_chances_created": 0.4058,
                "big_chances_missed": 0.0,
                "xgot": 0.1047,
                "ball_carries": 16.1961,
                "total_progression": 73.216,
                "progressive_carries": 0.4973,
                "shots_off_target": 0.4168,
                "bench_appearance_probability": 0.414,
                "bench_expected_minutes": 34.88,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.414,
                "projected_substitutes": 2,
                "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 74.0)",
              "stats": {
                "key_pass": 0.8848,
                "expected_assists": 0.0894,
                "assist_rate": 0.1065,
                "assists": 0,
                "expected_goals": 0.0426,
                "goal_rate": 0.0638,
                "goals": 0,
                "shots_on_target": 0.216,
                "total_shots": 0.6329,
                "rating": 6.9811,
                "minutes": 34.88,
                "total_pass": 30.5823,
                "accurate_pass": 26.6852,
                "duels_won": 2.5534,
                "total_long_balls": 2.7573,
                "accurate_long_balls": 1.3955,
                "total_own_half_passes": 9.2973,
                "accurate_own_half_passes": 8.4042,
                "total_opp_half_passes": 21.285,
                "accurate_opp_half_passes": 18.281,
                "crosses_total": 1.0947,
                "crosses_accurate": 0.7249,
                "touches": 36.8367,
                "possession_lost": 5.2801,
                "dispossessed": 0.0,
                "duels_lost": 2.2905,
                "aerial_won": 0.0,
                "aerial_lost": 0.1484,
                "interceptions": 0.1872,
                "tackles_won": 0.7023,
                "tackles": 1.5666,
                "clearances": 0.0,
                "total_contest": 0.6705,
                "won_contest": 0.3624,
                "challenges_lost": 0.7653,
                "fouls": 0.6021,
                "fouls_drawn": 0.6168,
                "blocks": 0.0,
                "big_chances_created": 0.4058,
                "big_chances_missed": 0.0,
                "xgot": 0.1047,
                "ball_carries": 16.1961,
                "total_progression": 73.216,
                "progressive_carries": 0.4973,
                "shots_off_target": 0.4168,
                "bench_appearance_probability": 0.414,
                "bench_expected_minutes": 34.88,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3643,
                "fifa_rank": 2921.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            }
          ]
        },
        "Williot Swedberg": {
          "player_id": 1126779,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 19,
          "height": 185,
          "market_value": 18700000,
          "stats": {
            "expected_goals": 0.0703,
            "goal_rate": 0.0786,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0382,
            "key_pass": 0,
            "rating": 6.6576,
            "minutes": 30,
            "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": 0,
            "crosses_accurate": 0,
            "touches": 15,
            "possession_lost": 3.6896,
            "dispossessed": 0.3244,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.2033,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1208,
            "offsides": 0,
            "ball_carries": 5,
            "total_progression": 26,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.445,
            "bench_expected_minutes": 30.4,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.247,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16421058,
              "match_date": "2026-10-11",
              "home_team": "Elche",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 19,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.005,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "key_pass": 1,
                "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": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 64,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0867,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 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": 16416347,
              "match_date": "2026-09-13",
              "home_team": "Celta Vigo",
              "away_team": "Málaga CF",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 28,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3919,
                "expected_assists": 0.0499,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 14,
                "accurate_pass": 11,
                "key_pass": 2,
                "tackles": 1,
                "tackles_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": 16416340,
              "match_date": "2026-09-03",
              "home_team": "Real Sociedad",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 63,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0073,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 10,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 2,
                "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"
            },
            {
              "match_id": 16416308,
              "match_date": "2026-08-30",
              "home_team": "Celta Vigo",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 57,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3908,
                "expected_assists": 0.0165,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 10,
                "accurate_pass": 6,
                "clearances": 1,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 65,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0061,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 33,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0296,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "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": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 65,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.691,
                "expected_assists": 0.0217,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 13,
                "accurate_pass": 11,
                "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": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 74,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1037,
                "expected_assists": 0.0013,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0199,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 7,
                "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": 3324,
            "combined_rank_score": 1279.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 578.0,
            "sofascore_rating": 6.8,
            "sofascore_appearances": 4.0,
            "fifa_rank": 1981.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6576,
            "source_file": "data/player_rankings.csv",
            "player_name": "Williot Swedberg",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Leandro Cabrera",
                  "ranking": 3325
                },
                {
                  "player_name": "Alejandro Zendejas",
                  "ranking": 3326
                },
                {
                  "player_name": "Sacha Boey",
                  "ranking": 3327
                },
                {
                  "player_name": "Hugo Cuypers",
                  "ranking": 3328
                },
                {
                  "player_name": "Carl Rushworth",
                  "ranking": 3329
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.774,
          "history_matches": 36,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 36,
            "data_confidence": 0.774,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 30.4,
            "bench_appearance_prob": 0.445,
            "market_value_adjustment": 1.0041,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 4.0,
              "starts": 3.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 34.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.16
            },
            "rationale": "Bench projection scaled from XGBoost F_service (36 historical appearances) to 30.4 expected mins (appearance prob 0.45); FBref playing time empirical prior: 1.0 sub appearances, 34.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0607,
                "goals": 0.0688,
                "goal_rate": 0.0688,
                "shots_on_target": 0.2402,
                "total_shots": 0.5717,
                "expected_assists": 0.0329,
                "key_pass": 0.3729,
                "rating": 6.6576,
                "minutes": 26.33,
                "total_pass": 7.9361,
                "accurate_pass": 6.2686,
                "duels_won": 1.9214,
                "total_long_balls": 0.1211,
                "accurate_long_balls": 0.0783,
                "total_opp_half_passes": 6.2059,
                "accurate_opp_half_passes": 4.9371,
                "crosses_total": 0.2865,
                "crosses_accurate": 0.0084,
                "touches": 12.8546,
                "possession_lost": 3.1826,
                "dispossessed": 0.3231,
                "duels_lost": 2.1538,
                "aerial_lost": 0.3403,
                "total_contest": 0.521,
                "won_contest": 0.1458,
                "ball_recovery": 0.478,
                "challenges_lost": 0.3084,
                "fouls": 0.8068,
                "fouls_drawn": 0.7956,
                "assists": 0.1777,
                "assist_rate": 0.1777,
                "interceptions": 0.082,
                "tackles_won": 0.3066,
                "tackles": 0.7641,
                "clearances": 0.0448,
                "blocks": 0.0137,
                "big_chances_created": 0.2809,
                "big_chances_missed": 0.1789,
                "xgot": 0.1042,
                "offsides": 0.0,
                "ball_carries": 4.5222,
                "total_progression": 22.1995,
                "progressive_carries": 1.0248,
                "shots_off_target": 0.3315
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Elche",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1504,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Real Racing Club",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Málaga CF",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.1087,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-03",
                    "opponent": "Real Sociedad",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Athletic Club",
                    "minutes": 57.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 33.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 7.5235,
                  "expectedGoals": 0.1268,
                  "accurateOppositionHalfPasses": 5.6671,
                  "accuratePass": 7.8073,
                  "totalShots": 0.5821
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06065500155091286,
                    "model_output": 0.0607,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0934
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0159
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0058
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0046
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.0144,
                      "total": 0.0607,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.640032
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.165735
                        },
                        {
                          "name": "goals",
                          "margin": -0.067549
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.057345
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.034774
                        }
                      ],
                      "others_margin": -0.215202
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06875729560852051,
                    "model_output": 0.0688,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0913
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0179
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0087
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0058
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0032
                        }
                      ],
                      "others": -0.0077,
                      "total": 0.0688,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.595873
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.173793
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.097165
                        },
                        {
                          "name": "goals",
                          "margin": -0.070333
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.040754
                        }
                      ],
                      "others_margin": -0.106465
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.24020111560821533,
                    "model_output": 0.2402,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2205
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0274
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0223
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0105
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.0073,
                      "total": 0.2402,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.527735
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.090214
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.079926
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.039943
                        },
                        {
                          "name": "goals",
                          "margin": -0.037351
                        }
                      ],
                      "others_margin": -0.03056
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5716854929924011,
                    "model_output": 0.5717,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4892
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1482
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0444
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0258
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": -0.021
                        }
                      ],
                      "others": -0.0735,
                      "total": 0.5717,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.489208
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.148203
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.044426
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.025798
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": -0.021021
                        }
                      ],
                      "others_margin": -0.073499
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0329437218606472,
                    "model_output": 0.0329,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0181
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.004
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0032
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0025
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0064,
                      "total": 0.0329,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.332098
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.091759
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.078519
                        },
                        {
                          "name": "rating",
                          "margin": 0.06245
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.052575
                        }
                      ],
                      "others_margin": -0.174943
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.37286126613616943,
                    "model_output": 0.3729,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.233
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0267
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0221
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0144
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0118
                        }
                      ],
                      "others": 0.0075,
                      "total": 0.3729,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.424642
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.062493
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.054832
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.037378
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.03165
                        }
                      ],
                      "others_margin": 0.019908
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.657567977905273,
                    "model_output": 6.6576,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0551
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0108
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0105
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0099
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0082
                        }
                      ],
                      "others": -0.0365,
                      "total": 6.6576,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.055074
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.010834
                        },
                        {
                          "name": "touches",
                          "margin": -0.01051
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.009911
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.008202
                        }
                      ],
                      "others_margin": -0.036571
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 36,
                  "role_matches": 19,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0041, quality 0.618)",
              "stats": {
                "expected_goals": 0.0609,
                "goals": 0.069,
                "goal_rate": 0.069,
                "shots_on_target": 0.2412,
                "total_shots": 0.5741,
                "expected_assists": 0.0331,
                "key_pass": 0.3744,
                "rating": 6.6576,
                "minutes": 26.33,
                "total_pass": 7.9686,
                "accurate_pass": 6.2943,
                "duels_won": 1.9293,
                "total_long_balls": 0.1216,
                "accurate_long_balls": 0.0786,
                "total_opp_half_passes": 6.2313,
                "accurate_opp_half_passes": 4.9573,
                "crosses_total": 0.2877,
                "crosses_accurate": 0.0084,
                "touches": 12.9073,
                "possession_lost": 3.1956,
                "dispossessed": 0.3244,
                "duels_lost": 2.1626,
                "aerial_lost": 0.3417,
                "total_contest": 0.5231,
                "won_contest": 0.1464,
                "ball_recovery": 0.48,
                "challenges_lost": 0.3097,
                "fouls": 0.8101,
                "fouls_drawn": 0.7989,
                "assists": 0.1784,
                "assist_rate": 0.1784,
                "interceptions": 0.0823,
                "tackles_won": 0.3079,
                "tackles": 0.7672,
                "clearances": 0.045,
                "blocks": 0.0138,
                "big_chances_created": 0.2821,
                "big_chances_missed": 0.1796,
                "xgot": 0.1046,
                "offsides": 0.0,
                "ball_carries": 4.5407,
                "total_progression": 22.2905,
                "progressive_carries": 1.029,
                "shots_off_target": 0.3329
              },
              "params": {
                "market_value_eur": 18700000,
                "quality_factor": 0.6181,
                "boost_factor": 1.0041,
                "reference_quality": 0.505,
                "history_matches": 36,
                "history_shrink": 0.122,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0127)",
              "stats": {
                "expected_goals": 0.0609,
                "goals": 0.0681,
                "goal_rate": 0.0681,
                "shots_on_target": 0.2412,
                "total_shots": 0.5715,
                "expected_assists": 0.0331,
                "key_pass": 0.3744,
                "rating": 6.6576,
                "minutes": 26.33,
                "total_pass": 7.9686,
                "accurate_pass": 6.2943,
                "duels_won": 1.9293,
                "total_long_balls": 0.1216,
                "accurate_long_balls": 0.0786,
                "total_opp_half_passes": 6.2313,
                "accurate_opp_half_passes": 4.9573,
                "crosses_total": 0.2871,
                "crosses_accurate": 0.0084,
                "touches": 12.9073,
                "possession_lost": 3.1956,
                "dispossessed": 0.3244,
                "duels_lost": 2.1626,
                "aerial_lost": 0.3417,
                "total_contest": 0.5231,
                "won_contest": 0.1464,
                "ball_recovery": 0.48,
                "challenges_lost": 0.3097,
                "fouls": 0.8029,
                "fouls_drawn": 0.8058,
                "assists": 0.1761,
                "assist_rate": 0.1761,
                "interceptions": 0.0828,
                "tackles_won": 0.3071,
                "tackles": 0.7672,
                "clearances": 0.045,
                "blocks": 0.0138,
                "big_chances_created": 0.2821,
                "big_chances_missed": 0.1796,
                "xgot": 0.1046,
                "offsides": 0.0,
                "ball_carries": 4.5407,
                "total_progression": 22.2905,
                "progressive_carries": 1.029,
                "shots_off_target": 0.3329
              },
              "params": {
                "blend_weight": 0.0127,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2926,
                "prior_reliability": 0.16,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.8101,
                  "after": 0.8029
                },
                {
                  "stat": "wasFouled",
                  "before": 0.7989,
                  "after": 0.8058
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 26.3 to 30.4 expected minutes (appearance prob 0.45)",
              "stats": {
                "expected_goals": 0.0703,
                "goals": 0.0786,
                "goal_rate": 0.0786,
                "shots_on_target": 0.2785,
                "total_shots": 0.6629,
                "expected_assists": 0.0382,
                "key_pass": 0.4323,
                "rating": 6.6576,
                "minutes": 30.4,
                "total_pass": 9.2004,
                "accurate_pass": 7.2673,
                "duels_won": 2.2275,
                "total_long_balls": 0.1404,
                "accurate_long_balls": 0.0907,
                "total_opp_half_passes": 7.1945,
                "accurate_opp_half_passes": 5.7236,
                "crosses_total": 0.3315,
                "crosses_accurate": 0.0097,
                "touches": 14.9025,
                "possession_lost": 3.6896,
                "dispossessed": 0.3244,
                "duels_lost": 2.4969,
                "aerial_lost": 0.3417,
                "total_contest": 0.604,
                "won_contest": 0.169,
                "ball_recovery": 0.5542,
                "challenges_lost": 0.3097,
                "fouls": 0.927,
                "fouls_drawn": 0.9304,
                "assists": 0.2033,
                "assist_rate": 0.2033,
                "interceptions": 0.0956,
                "tackles_won": 0.3546,
                "tackles": 0.8858,
                "clearances": 0.052,
                "blocks": 0.0159,
                "big_chances_created": 0.3257,
                "big_chances_missed": 0.2074,
                "xgot": 0.1208,
                "offsides": 0.0,
                "ball_carries": 5.2426,
                "total_progression": 25.7361,
                "progressive_carries": 1.1881,
                "shots_off_target": 0.3844,
                "bench_appearance_probability": 0.445,
                "bench_expected_minutes": 30.4
              },
              "params": {
                "expected_minutes": 30.4,
                "projection_minutes": 26.33,
                "minutes_scale": 1.1546,
                "appearance_probability": 0.445
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0703,
                "goals": 0.0786,
                "goal_rate": 0.0786,
                "shots_on_target": 0.2785,
                "total_shots": 0.6629,
                "expected_assists": 0.0382,
                "key_pass": 0.4323,
                "rating": 6.6576,
                "minutes": 30.4,
                "total_pass": 9.2004,
                "accurate_pass": 7.2673,
                "duels_won": 2.2275,
                "total_long_balls": 0.1404,
                "accurate_long_balls": 0.0907,
                "total_opp_half_passes": 7.1945,
                "accurate_opp_half_passes": 5.7236,
                "crosses_total": 0.3315,
                "crosses_accurate": 0.0097,
                "touches": 14.9025,
                "possession_lost": 3.6896,
                "dispossessed": 0.3244,
                "duels_lost": 2.4969,
                "aerial_lost": 0.3417,
                "total_contest": 0.604,
                "won_contest": 0.169,
                "ball_recovery": 0.5542,
                "challenges_lost": 0.3097,
                "fouls": 0.927,
                "fouls_drawn": 0.9304,
                "assists": 0.2033,
                "assist_rate": 0.2033,
                "interceptions": 0.0956,
                "tackles_won": 0.3546,
                "tackles": 0.8858,
                "clearances": 0.052,
                "blocks": 0.0159,
                "big_chances_created": 0.3257,
                "big_chances_missed": 0.2074,
                "xgot": 0.1208,
                "offsides": 0.0,
                "ball_carries": 5.2426,
                "total_progression": 25.7361,
                "progressive_carries": 1.1881,
                "shots_off_target": 0.3844,
                "bench_appearance_probability": 0.445,
                "bench_expected_minutes": 30.4
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "expected_goals": 0.0703,
                "goal_rate": 0.0786,
                "goals": 0,
                "shots_on_target": 0.2785,
                "total_shots": 0.6629,
                "expected_assists": 0.0382,
                "key_pass": 0.4323,
                "rating": 6.6576,
                "minutes": 30.4,
                "total_pass": 9.2004,
                "accurate_pass": 7.2673,
                "duels_won": 2.2275,
                "total_long_balls": 0.1404,
                "accurate_long_balls": 0.0907,
                "total_opp_half_passes": 7.1945,
                "accurate_opp_half_passes": 5.7236,
                "crosses_total": 0.3315,
                "crosses_accurate": 0.0097,
                "touches": 14.9025,
                "possession_lost": 3.6896,
                "dispossessed": 0.3244,
                "duels_lost": 2.4969,
                "aerial_lost": 0.3417,
                "total_contest": 0.604,
                "won_contest": 0.169,
                "ball_recovery": 0.5542,
                "challenges_lost": 0.3097,
                "fouls": 0.927,
                "fouls_drawn": 0.9304,
                "assist_rate": 0.2033,
                "assists": 0,
                "interceptions": 0.0956,
                "tackles_won": 0.3546,
                "tackles": 0.8858,
                "clearances": 0.052,
                "blocks": 0.0159,
                "big_chances_created": 0.3257,
                "big_chances_missed": 0.2074,
                "xgot": 0.1208,
                "offsides": 0.0,
                "ball_carries": 5.2426,
                "total_progression": 25.7361,
                "progressive_carries": 1.1881,
                "shots_off_target": 0.3844,
                "bench_appearance_probability": 0.445,
                "bench_expected_minutes": 30.4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.445,
                "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 76.0)",
              "stats": {
                "expected_goals": 0.0703,
                "goal_rate": 0.0786,
                "goals": 0,
                "shots_on_target": 0.2785,
                "total_shots": 0.6629,
                "expected_assists": 0.0382,
                "key_pass": 0.4323,
                "rating": 6.6576,
                "minutes": 30.4,
                "total_pass": 9.2004,
                "accurate_pass": 7.2673,
                "duels_won": 2.2275,
                "total_long_balls": 0.1404,
                "accurate_long_balls": 0.0907,
                "total_opp_half_passes": 7.1945,
                "accurate_opp_half_passes": 5.7236,
                "crosses_total": 0.3315,
                "crosses_accurate": 0.0097,
                "touches": 14.9025,
                "possession_lost": 3.6896,
                "dispossessed": 0.3244,
                "duels_lost": 2.4969,
                "aerial_lost": 0.3417,
                "total_contest": 0.604,
                "won_contest": 0.169,
                "ball_recovery": 0.5542,
                "challenges_lost": 0.3097,
                "fouls": 0.927,
                "fouls_drawn": 0.9304,
                "assist_rate": 0.2033,
                "assists": 0,
                "interceptions": 0.0956,
                "tackles_won": 0.3546,
                "tackles": 0.8858,
                "clearances": 0.052,
                "blocks": 0.0159,
                "big_chances_created": 0.3257,
                "big_chances_missed": 0.2074,
                "xgot": 0.1208,
                "offsides": 0.0,
                "ball_carries": 5.2426,
                "total_progression": 25.7361,
                "progressive_carries": 1.1881,
                "shots_off_target": 0.3844,
                "bench_appearance_probability": 0.445,
                "bench_expected_minutes": 30.4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3324,
                "fifa_rank": 1981.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            }
          ]
        },
        "Jones El-Abdellaoui": {
          "player_id": 1173575,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 39,
          "height": 184,
          "market_value": 8400000,
          "stats": {
            "expected_goals": 0.0451,
            "goal_rate": 0.0807,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0144,
            "key_pass": 0,
            "rating": 6.6375,
            "minutes": 26,
            "total_pass": 5,
            "accurate_pass": 4,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 4.6989,
            "dispossessed": 0.6981,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0302,
            "offsides": 0,
            "ball_carries": 5,
            "total_progression": 31,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.532,
            "bench_expected_minutes": 25.8,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.247,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0432,
            "projected_assists": 0,
            "assist_probability": 0.0142,
            "finishing_factor": 1.0398,
            "creation_factor": 0.8,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16416348,
              "match_date": "2026-09-07",
              "home_team": "Getafe",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Getafe",
              "stats": {
                "minutes": 64,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0319,
                "expected_assists": 0.0087,
                "total_shots": 1,
                "total_pass": 20,
                "accurate_pass": 17,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 25,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0193,
                "expected_assists": 0.0117,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 6,
                "accurate_pass": 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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 63,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2722,
                "expected_assists": 0.0172,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 12
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 14,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_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": 14083401,
              "match_date": "2026-05-03",
              "home_team": "Celta Vigo",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 27,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0368,
                "expected_assists": 0.0001,
                "total_shots": 1,
                "total_pass": 3,
                "accurate_pass": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081817,
              "match_date": "2026-04-05",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0504,
                "expected_assists": 0.0064,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083689,
              "match_date": "2026-03-22",
              "home_team": "Celta Vigo",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 69,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2098,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083622,
              "match_date": "2026-03-15",
              "home_team": "Real Betis",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "clearances": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083607,
              "match_date": "2026-03-06",
              "home_team": "Celta Vigo",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 20,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0202,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "key_pass": 1,
                "interceptions": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081797,
              "match_date": "2026-03-01",
              "home_team": "Girona FC",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 17,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 4507,
            "combined_rank_score": 2528.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 792.0,
            "sofascore_rating": 6.6273,
            "sofascore_appearances": 22.0,
            "fifa_rank": 4264.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6375,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jones El-Abdellaoui",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Arthur Cabral",
                  "ranking": 4502
                },
                {
                  "player_name": "Iván Colman",
                  "ranking": 4503
                },
                {
                  "player_name": "Álvaro Montoro",
                  "ranking": 4504
                },
                {
                  "player_name": "Cryzan",
                  "ranking": 4505
                },
                {
                  "player_name": "Valentino Lazaro",
                  "ranking": 4506
                }
              ],
              "lower": [
                {
                  "player_name": "Filip Đuričić",
                  "ranking": 4508
                },
                {
                  "player_name": "Michał Skóraś",
                  "ranking": 4509
                },
                {
                  "player_name": "Santiago Ramos Mingo",
                  "ranking": 4510
                },
                {
                  "player_name": "Thelo Aasgaard",
                  "ranking": 4511
                },
                {
                  "player_name": "Richie Laryea",
                  "ranking": 4512
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.76,
          "history_matches": 25,
          "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": 25,
            "data_confidence": 0.76,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 25.8,
            "bench_appearance_prob": 0.532,
            "market_value_adjustment": 0.9999,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 26.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0667
            },
            "rationale": "Bench projection scaled from XGBoost F_service (25 historical appearances) to 25.8 expected mins (appearance prob 0.53); FBref playing time empirical prior: 1.0 sub appearances, 26.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0641,
                "goals": 0.0688,
                "goal_rate": 0.0688,
                "shots_on_target": 0.2549,
                "total_shots": 0.5416,
                "expected_assists": 0.0205,
                "key_pass": 0.2971,
                "rating": 6.6375,
                "minutes": 21.84,
                "total_pass": 4.2805,
                "accurate_pass": 3.2748,
                "duels_won": 0.803,
                "total_long_balls": 0.1336,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.1881,
                "accurate_opp_half_passes": 2.4628,
                "crosses_total": 1.0789,
                "crosses_accurate": 0.2068,
                "touches": 10.5117,
                "possession_lost": 3.9781,
                "dispossessed": 0.6982,
                "duels_lost": 1.8733,
                "aerial_lost": 0.3395,
                "total_contest": 0.5418,
                "won_contest": 0.1469,
                "ball_recovery": 1.1912,
                "challenges_lost": 0.1377,
                "fouls": 0.4167,
                "fouls_drawn": 0.1912,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1425,
                "tackles_won": 0.1897,
                "tackles": 0.2121,
                "clearances": 0.3375,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1039,
                "xgot": 0.0429,
                "offsides": 0.108,
                "ball_carries": 3.9497,
                "total_progression": 26.6232,
                "progressive_carries": 1.214,
                "shots_off_target": 0.2867
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-07",
                    "opponent": "Getafe",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1526,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.1297,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1103,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0937,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Elche",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0797,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-05",
                    "opponent": "Valencia",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0677,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Deportivo Alavés",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0576,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Real Betis",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.0489,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-06",
                    "opponent": "Real Madrid",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0416,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-01",
                    "opponent": "Girona FC",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0354,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 6.6671,
                  "expectedGoals": 0.0714,
                  "accurateOppositionHalfPasses": 5.7162,
                  "accuratePass": 7.4152,
                  "totalShots": 0.7591
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0641179010272026,
                    "model_output": 0.0641,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0917
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0166
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0088
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0035
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0031
                        }
                      ],
                      "others": -0.0159,
                      "total": 0.0641,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.623656
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.170909
                        },
                        {
                          "name": "goals",
                          "margin": -0.103773
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.043982
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.039221
                        }
                      ],
                      "others_margin": -0.222016
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06882832944393158,
                    "model_output": 0.0688,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0961
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0154
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0064
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0056
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0085,
                      "total": 0.0688,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.63944
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.155225
                        },
                        {
                          "name": "goals",
                          "margin": -0.072558
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.067239
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.03356
                        }
                      ],
                      "others_margin": -0.115327
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2548868656158447,
                    "model_output": 0.2549,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2113
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0292
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0223
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0156
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0116
                        }
                      ],
                      "others": 0.0073,
                      "total": 0.2549,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.499236
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.093782
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.078056
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.058315
                        },
                        {
                          "name": "goals",
                          "margin": -0.045602
                        }
                      ],
                      "others_margin": 0.028605
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5415381789207458,
                    "model_output": 0.5415,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5374
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1378
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0409
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0363
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0306
                        }
                      ],
                      "others": -0.0493,
                      "total": 0.5415,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.537367
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.137811
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.040877
                        },
                        {
                          "name": "goals",
                          "margin": -0.036253
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.030613
                        }
                      ],
                      "others_margin": -0.049381
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.020519889891147614,
                    "model_output": 0.0205,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.021
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0048
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0041
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0035
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.0076,
                      "total": 0.0205,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.397015
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.117827
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.112089
                        },
                        {
                          "name": "rating",
                          "margin": -0.107767
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.093268
                        }
                      ],
                      "others_margin": -0.312884
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.2970902919769287,
                    "model_output": 0.2971,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2666
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0294
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0233
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0141
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.013
                        }
                      ],
                      "others": -0.0299,
                      "total": 0.2971,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.504087
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.075155
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.063879
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.040695
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.039147
                        }
                      ],
                      "others_margin": -0.095294
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.637508392333984,
                    "model_output": 6.6375,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.058
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0248
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0146
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0131
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0111
                        }
                      ],
                      "others": -0.0341,
                      "total": 6.6375,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.057966
                        },
                        {
                          "name": "rating",
                          "margin": -0.024778
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.014567
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.013067
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.011086
                        }
                      ],
                      "others_margin": -0.034163
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 25,
                  "role_matches": 19,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9999, quality 0.503)",
              "stats": {
                "expected_goals": 0.0641,
                "goals": 0.0688,
                "goal_rate": 0.0688,
                "shots_on_target": 0.2549,
                "total_shots": 0.5416,
                "expected_assists": 0.0205,
                "key_pass": 0.2971,
                "rating": 6.6375,
                "minutes": 21.84,
                "total_pass": 4.2801,
                "accurate_pass": 3.2745,
                "duels_won": 0.8029,
                "total_long_balls": 0.1336,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.1878,
                "accurate_opp_half_passes": 2.4626,
                "crosses_total": 1.0788,
                "crosses_accurate": 0.2068,
                "touches": 10.5106,
                "possession_lost": 3.9777,
                "dispossessed": 0.6981,
                "duels_lost": 1.8731,
                "aerial_lost": 0.3395,
                "total_contest": 0.5417,
                "won_contest": 0.1469,
                "ball_recovery": 1.1911,
                "challenges_lost": 0.1377,
                "fouls": 0.4167,
                "fouls_drawn": 0.1912,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1425,
                "tackles_won": 0.1897,
                "tackles": 0.2121,
                "clearances": 0.3375,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1039,
                "xgot": 0.0429,
                "offsides": 0.108,
                "ball_carries": 3.9493,
                "total_progression": 26.6205,
                "progressive_carries": 1.2139,
                "shots_off_target": 0.2867
              },
              "params": {
                "market_value_eur": 8400000,
                "quality_factor": 0.5035,
                "boost_factor": 0.9999,
                "reference_quality": 0.505,
                "history_matches": 25,
                "history_shrink": 0.1667,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0072)",
              "stats": {
                "expected_goals": 0.0641,
                "goals": 0.0683,
                "goal_rate": 0.0683,
                "shots_on_target": 0.2548,
                "total_shots": 0.5413,
                "expected_assists": 0.0205,
                "key_pass": 0.2971,
                "rating": 6.6375,
                "minutes": 21.84,
                "total_pass": 4.2801,
                "accurate_pass": 3.2745,
                "duels_won": 0.8029,
                "total_long_balls": 0.1336,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.1878,
                "accurate_opp_half_passes": 2.4626,
                "crosses_total": 1.0763,
                "crosses_accurate": 0.2068,
                "touches": 10.5106,
                "possession_lost": 3.9777,
                "dispossessed": 0.6981,
                "duels_lost": 1.8731,
                "aerial_lost": 0.3395,
                "total_contest": 0.5417,
                "won_contest": 0.1469,
                "ball_recovery": 1.1911,
                "challenges_lost": 0.1377,
                "fouls": 0.4172,
                "fouls_drawn": 0.1916,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1415,
                "tackles_won": 0.1883,
                "tackles": 0.2121,
                "clearances": 0.3375,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1039,
                "xgot": 0.0429,
                "offsides": 0.109,
                "ball_carries": 3.9493,
                "total_progression": 26.6205,
                "progressive_carries": 1.2139,
                "shots_off_target": 0.2867
              },
              "params": {
                "blend_weight": 0.0072,
                "history_matches": 25,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2427,
                "prior_reliability": 0.0667,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 21.8 to 25.8 expected minutes (appearance prob 0.53)",
              "stats": {
                "expected_goals": 0.0757,
                "goals": 0.0807,
                "goal_rate": 0.0807,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0242,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0507,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8
              },
              "params": {
                "expected_minutes": 25.8,
                "projection_minutes": 21.84,
                "minutes_scale": 1.1813,
                "appearance_probability": 0.532
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0757,
                "goals": 0.0807,
                "goal_rate": 0.0807,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0242,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0507,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0757,
                "goal_rate": 0.0807,
                "goals": 0,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0242,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0507,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.0451,
                "goal_rate": 0.0807,
                "goals": 0,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0144,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0302,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.0398,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 0.532
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0757,
                  "after": 0.0451
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0242,
                  "after": 0.0144
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 72.0)",
              "stats": {
                "expected_goals": 0.0451,
                "goal_rate": 0.0807,
                "goals": 0,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0144,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0302,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.0398,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4507,
                "fifa_rank": 4264.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.0451,
                "goal_rate": 0.0807,
                "goals": 0,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0144,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0302,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0432,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0398,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0432,
                "goal_rate": 0.0807,
                "scorer_weight": 0.0469,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0513,
                "finishing_factor": 1.0398,
                "appearance_weight": 0.532,
                "weight_rank": 6,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0451,
                "goal_rate": 0.0807,
                "goals": 0,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0144,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0302,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0432,
                "projected_assists": 0,
                "assist_probability": 0.0142,
                "finishing_factor": 1.0398,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0142,
                "assist_rate": 0.0,
                "provider_weight": 0.0115,
                "squad_weight_total": 0.6035,
                "weight_share": 0.0191,
                "creation_factor": 0.8,
                "appearance_weight": 0.532,
                "weight_rank": 10,
                "eligible_players": 12
              }
            }
          ]
        }
      },
      "substitutes": {
        "Jones El-Abdellaoui": {
          "player_id": 1173575,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 39,
          "height": 184,
          "market_value": 8400000,
          "stats": {
            "expected_goals": 0.0451,
            "goal_rate": 0.0807,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0144,
            "key_pass": 0,
            "rating": 6.6375,
            "minutes": 26,
            "total_pass": 5,
            "accurate_pass": 4,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 4.6989,
            "dispossessed": 0.6981,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0302,
            "offsides": 0,
            "ball_carries": 5,
            "total_progression": 31,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.532,
            "bench_expected_minutes": 25.8,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.247,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0432,
            "projected_assists": 0,
            "assist_probability": 0.0142,
            "finishing_factor": 1.0398,
            "creation_factor": 0.8,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16416348,
              "match_date": "2026-09-07",
              "home_team": "Getafe",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Getafe",
              "stats": {
                "minutes": 64,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0319,
                "expected_assists": 0.0087,
                "total_shots": 1,
                "total_pass": 20,
                "accurate_pass": 17,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 25,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0193,
                "expected_assists": 0.0117,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 6,
                "accurate_pass": 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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 63,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2722,
                "expected_assists": 0.0172,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 12
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 14,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_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": 14083401,
              "match_date": "2026-05-03",
              "home_team": "Celta Vigo",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 27,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0368,
                "expected_assists": 0.0001,
                "total_shots": 1,
                "total_pass": 3,
                "accurate_pass": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081817,
              "match_date": "2026-04-05",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0504,
                "expected_assists": 0.0064,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083689,
              "match_date": "2026-03-22",
              "home_team": "Celta Vigo",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 69,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2098,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083622,
              "match_date": "2026-03-15",
              "home_team": "Real Betis",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "clearances": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083607,
              "match_date": "2026-03-06",
              "home_team": "Celta Vigo",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 20,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0202,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "key_pass": 1,
                "interceptions": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081797,
              "match_date": "2026-03-01",
              "home_team": "Girona FC",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 17,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 4507,
            "combined_rank_score": 2528.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 792.0,
            "sofascore_rating": 6.6273,
            "sofascore_appearances": 22.0,
            "fifa_rank": 4264.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6375,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jones El-Abdellaoui",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Arthur Cabral",
                  "ranking": 4502
                },
                {
                  "player_name": "Iván Colman",
                  "ranking": 4503
                },
                {
                  "player_name": "Álvaro Montoro",
                  "ranking": 4504
                },
                {
                  "player_name": "Cryzan",
                  "ranking": 4505
                },
                {
                  "player_name": "Valentino Lazaro",
                  "ranking": 4506
                }
              ],
              "lower": [
                {
                  "player_name": "Filip Đuričić",
                  "ranking": 4508
                },
                {
                  "player_name": "Michał Skóraś",
                  "ranking": 4509
                },
                {
                  "player_name": "Santiago Ramos Mingo",
                  "ranking": 4510
                },
                {
                  "player_name": "Thelo Aasgaard",
                  "ranking": 4511
                },
                {
                  "player_name": "Richie Laryea",
                  "ranking": 4512
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.76,
          "history_matches": 25,
          "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": 25,
            "data_confidence": 0.76,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 25.8,
            "bench_appearance_prob": 0.532,
            "market_value_adjustment": 0.9999,
            "fbref_prior_metrics": {
              "squad": "Celta Vigo",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 26.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0667
            },
            "rationale": "Bench projection scaled from XGBoost F_service (25 historical appearances) to 25.8 expected mins (appearance prob 0.53); FBref playing time empirical prior: 1.0 sub appearances, 26.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0641,
                "goals": 0.0688,
                "goal_rate": 0.0688,
                "shots_on_target": 0.2549,
                "total_shots": 0.5416,
                "expected_assists": 0.0205,
                "key_pass": 0.2971,
                "rating": 6.6375,
                "minutes": 21.84,
                "total_pass": 4.2805,
                "accurate_pass": 3.2748,
                "duels_won": 0.803,
                "total_long_balls": 0.1336,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.1881,
                "accurate_opp_half_passes": 2.4628,
                "crosses_total": 1.0789,
                "crosses_accurate": 0.2068,
                "touches": 10.5117,
                "possession_lost": 3.9781,
                "dispossessed": 0.6982,
                "duels_lost": 1.8733,
                "aerial_lost": 0.3395,
                "total_contest": 0.5418,
                "won_contest": 0.1469,
                "ball_recovery": 1.1912,
                "challenges_lost": 0.1377,
                "fouls": 0.4167,
                "fouls_drawn": 0.1912,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1425,
                "tackles_won": 0.1897,
                "tackles": 0.2121,
                "clearances": 0.3375,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1039,
                "xgot": 0.0429,
                "offsides": 0.108,
                "ball_carries": 3.9497,
                "total_progression": 26.6232,
                "progressive_carries": 1.214,
                "shots_off_target": 0.2867
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-07",
                    "opponent": "Getafe",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1526,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Osasuna",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.1297,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Valencia",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1103,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0937,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Elche",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0797,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-05",
                    "opponent": "Valencia",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0677,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Deportivo Alavés",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0576,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Real Betis",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.0489,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-06",
                    "opponent": "Real Madrid",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0416,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-01",
                    "opponent": "Girona FC",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0354,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 6.6671,
                  "expectedGoals": 0.0714,
                  "accurateOppositionHalfPasses": 5.7162,
                  "accuratePass": 7.4152,
                  "totalShots": 0.7591
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0641179010272026,
                    "model_output": 0.0641,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0917
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0166
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0088
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0035
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0031
                        }
                      ],
                      "others": -0.0159,
                      "total": 0.0641,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.623656
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.170909
                        },
                        {
                          "name": "goals",
                          "margin": -0.103773
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.043982
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.039221
                        }
                      ],
                      "others_margin": -0.222016
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06882832944393158,
                    "model_output": 0.0688,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0961
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0154
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0064
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0056
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0085,
                      "total": 0.0688,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.63944
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.155225
                        },
                        {
                          "name": "goals",
                          "margin": -0.072558
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.067239
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.03356
                        }
                      ],
                      "others_margin": -0.115327
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2548868656158447,
                    "model_output": 0.2549,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2113
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0292
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0223
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0156
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0116
                        }
                      ],
                      "others": 0.0073,
                      "total": 0.2549,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.499236
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.093782
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.078056
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.058315
                        },
                        {
                          "name": "goals",
                          "margin": -0.045602
                        }
                      ],
                      "others_margin": 0.028605
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5415381789207458,
                    "model_output": 0.5415,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5374
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1378
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0409
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0363
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0306
                        }
                      ],
                      "others": -0.0493,
                      "total": 0.5415,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.537367
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.137811
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.040877
                        },
                        {
                          "name": "goals",
                          "margin": -0.036253
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.030613
                        }
                      ],
                      "others_margin": -0.049381
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.020519889891147614,
                    "model_output": 0.0205,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.021
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0048
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0041
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0035
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.0076,
                      "total": 0.0205,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.397015
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.117827
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.112089
                        },
                        {
                          "name": "rating",
                          "margin": -0.107767
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.093268
                        }
                      ],
                      "others_margin": -0.312884
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.2970902919769287,
                    "model_output": 0.2971,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2666
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0294
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0233
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0141
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.013
                        }
                      ],
                      "others": -0.0299,
                      "total": 0.2971,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.504087
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.075155
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.063879
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.040695
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.039147
                        }
                      ],
                      "others_margin": -0.095294
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.637508392333984,
                    "model_output": 6.6375,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.058
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0248
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0146
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0131
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0111
                        }
                      ],
                      "others": -0.0341,
                      "total": 6.6375,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.057966
                        },
                        {
                          "name": "rating",
                          "margin": -0.024778
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.014567
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.013067
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.011086
                        }
                      ],
                      "others_margin": -0.034163
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 25,
                  "role_matches": 19,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9999, quality 0.503)",
              "stats": {
                "expected_goals": 0.0641,
                "goals": 0.0688,
                "goal_rate": 0.0688,
                "shots_on_target": 0.2549,
                "total_shots": 0.5416,
                "expected_assists": 0.0205,
                "key_pass": 0.2971,
                "rating": 6.6375,
                "minutes": 21.84,
                "total_pass": 4.2801,
                "accurate_pass": 3.2745,
                "duels_won": 0.8029,
                "total_long_balls": 0.1336,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.1878,
                "accurate_opp_half_passes": 2.4626,
                "crosses_total": 1.0788,
                "crosses_accurate": 0.2068,
                "touches": 10.5106,
                "possession_lost": 3.9777,
                "dispossessed": 0.6981,
                "duels_lost": 1.8731,
                "aerial_lost": 0.3395,
                "total_contest": 0.5417,
                "won_contest": 0.1469,
                "ball_recovery": 1.1911,
                "challenges_lost": 0.1377,
                "fouls": 0.4167,
                "fouls_drawn": 0.1912,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1425,
                "tackles_won": 0.1897,
                "tackles": 0.2121,
                "clearances": 0.3375,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1039,
                "xgot": 0.0429,
                "offsides": 0.108,
                "ball_carries": 3.9493,
                "total_progression": 26.6205,
                "progressive_carries": 1.2139,
                "shots_off_target": 0.2867
              },
              "params": {
                "market_value_eur": 8400000,
                "quality_factor": 0.5035,
                "boost_factor": 0.9999,
                "reference_quality": 0.505,
                "history_matches": 25,
                "history_shrink": 0.1667,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0072)",
              "stats": {
                "expected_goals": 0.0641,
                "goals": 0.0683,
                "goal_rate": 0.0683,
                "shots_on_target": 0.2548,
                "total_shots": 0.5413,
                "expected_assists": 0.0205,
                "key_pass": 0.2971,
                "rating": 6.6375,
                "minutes": 21.84,
                "total_pass": 4.2801,
                "accurate_pass": 3.2745,
                "duels_won": 0.8029,
                "total_long_balls": 0.1336,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.1878,
                "accurate_opp_half_passes": 2.4626,
                "crosses_total": 1.0763,
                "crosses_accurate": 0.2068,
                "touches": 10.5106,
                "possession_lost": 3.9777,
                "dispossessed": 0.6981,
                "duels_lost": 1.8731,
                "aerial_lost": 0.3395,
                "total_contest": 0.5417,
                "won_contest": 0.1469,
                "ball_recovery": 1.1911,
                "challenges_lost": 0.1377,
                "fouls": 0.4172,
                "fouls_drawn": 0.1916,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1415,
                "tackles_won": 0.1883,
                "tackles": 0.2121,
                "clearances": 0.3375,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1039,
                "xgot": 0.0429,
                "offsides": 0.109,
                "ball_carries": 3.9493,
                "total_progression": 26.6205,
                "progressive_carries": 1.2139,
                "shots_off_target": 0.2867
              },
              "params": {
                "blend_weight": 0.0072,
                "history_matches": 25,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2427,
                "prior_reliability": 0.0667,
                "competition": "La Liga",
                "squad": "Celta Vigo"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 21.8 to 25.8 expected minutes (appearance prob 0.53)",
              "stats": {
                "expected_goals": 0.0757,
                "goals": 0.0807,
                "goal_rate": 0.0807,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0242,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0507,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8
              },
              "params": {
                "expected_minutes": 25.8,
                "projection_minutes": 21.84,
                "minutes_scale": 1.1813,
                "appearance_probability": 0.532
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0757,
                "goals": 0.0807,
                "goal_rate": 0.0807,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0242,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0507,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0757,
                "goal_rate": 0.0807,
                "goals": 0,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0242,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0507,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.0451,
                "goal_rate": 0.0807,
                "goals": 0,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0144,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0302,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.0398,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 0.532
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0757,
                  "after": 0.0451
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0242,
                  "after": 0.0144
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 72.0)",
              "stats": {
                "expected_goals": 0.0451,
                "goal_rate": 0.0807,
                "goals": 0,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0144,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0302,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.0398,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4507,
                "fifa_rank": 4264.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.0451,
                "goal_rate": 0.0807,
                "goals": 0,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0144,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0302,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0432,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0398,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0432,
                "goal_rate": 0.0807,
                "scorer_weight": 0.0469,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0513,
                "finishing_factor": 1.0398,
                "appearance_weight": 0.532,
                "weight_rank": 6,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0451,
                "goal_rate": 0.0807,
                "goals": 0,
                "shots_on_target": 0.301,
                "total_shots": 0.6397,
                "expected_assists": 0.0144,
                "key_pass": 0.351,
                "rating": 6.6375,
                "minutes": 25.8,
                "total_pass": 5.0562,
                "accurate_pass": 3.8682,
                "duels_won": 0.9485,
                "total_long_balls": 0.1578,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7658,
                "accurate_opp_half_passes": 2.9091,
                "crosses_total": 1.2715,
                "crosses_accurate": 0.2443,
                "touches": 12.4164,
                "possession_lost": 4.6989,
                "dispossessed": 0.6981,
                "duels_lost": 2.2127,
                "aerial_lost": 0.3395,
                "total_contest": 0.6399,
                "won_contest": 0.1735,
                "ball_recovery": 1.4071,
                "challenges_lost": 0.1377,
                "fouls": 0.4928,
                "fouls_drawn": 0.2263,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1672,
                "tackles_won": 0.2224,
                "tackles": 0.2506,
                "clearances": 0.3987,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1227,
                "xgot": 0.0302,
                "offsides": 0.109,
                "ball_carries": 4.6654,
                "total_progression": 31.4473,
                "progressive_carries": 1.434,
                "shots_off_target": 0.3387,
                "bench_appearance_probability": 0.532,
                "bench_expected_minutes": 25.8,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0432,
                "projected_assists": 0,
                "assist_probability": 0.0142,
                "finishing_factor": 1.0398,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0142,
                "assist_rate": 0.0,
                "provider_weight": 0.0115,
                "squad_weight_total": 0.6035,
                "weight_share": 0.0191,
                "creation_factor": 0.8,
                "appearance_weight": 0.532,
                "weight_rank": 10,
                "eligible_players": 12
              }
            }
          ]
        },
        "Fer López": {
          "player_id": 1526628,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 8,
          "height": 186,
          "market_value": 17500000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0351,
            "assist_rate": 0.0731,
            "assists": 0,
            "expected_goals": 0.0277,
            "goal_rate": 0.0535,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7464,
            "minutes": 23,
            "total_pass": 10,
            "accurate_pass": 8,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 15,
            "possession_lost": 3.7141,
            "dispossessed": 0.4872,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "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.0829,
            "ball_carries": 4,
            "total_progression": 29,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.529,
            "bench_expected_minutes": 22.64,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.247,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.027,
            "projected_assists": 0,
            "assist_probability": 0.034,
            "finishing_factor": 1.0692,
            "creation_factor": 1.1273,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 74,
                "rating": 8.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.4877,
                "expected_assists": 0.2606,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 54,
                "accurate_pass": 53,
                "key_pass": 4,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 1,
                "duels_won": 12,
                "ball_recovery": 14
              },
              "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": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 89,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0466,
                "expected_assists": 0.0271,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 39,
                "accurate_pass": 34,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 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"
            },
            {
              "match_id": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2211,
                "expected_assists": 0.0494,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 58,
                "accurate_pass": 55,
                "interceptions": 1,
                "clearances": 1,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083551,
              "match_date": "2026-05-09",
              "home_team": "Atlético Madrid",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1732,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 32,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083401,
              "match_date": "2026-05-03",
              "home_team": "Celta Vigo",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1851,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 6
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083248,
              "match_date": "2026-04-26",
              "home_team": "Villarreal",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 14,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083261,
              "match_date": "2026-04-22",
              "home_team": "FC Barcelona",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 81,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.251,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 34,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083123,
              "match_date": "2026-04-12",
              "home_team": "Celta Vigo",
              "away_team": "Real Oviedo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2941,
                "expected_assists": 0.1083,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 70,
                "accurate_pass": 58,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081817,
              "match_date": "2026-04-05",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Valencia",
              "stats": {
                "minutes": 45,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1759,
                "expected_assists": 0.0253,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083689,
              "match_date": "2026-03-22",
              "home_team": "Celta Vigo",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 36,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2046,
                "expected_assists": 0.0137,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 16,
                "accurate_pass": 14,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3941,
            "combined_rank_score": 1921.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 563.0,
            "sofascore_rating": 6.8118,
            "sofascore_appearances": 17.0,
            "fifa_rank": 3280.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7464,
            "source_file": "data/player_rankings.csv",
            "player_name": "Fer López",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Giovanni Reyna",
                  "ranking": 3936
                },
                {
                  "player_name": "Nicolò Fagioli",
                  "ranking": 3937
                },
                {
                  "player_name": "Portu",
                  "ranking": 3938
                },
                {
                  "player_name": "Saúl Coco",
                  "ranking": 3939
                },
                {
                  "player_name": "Jonathan Rowe",
                  "ranking": 3940
                }
              ],
              "lower": [
                {
                  "player_name": "Andy Diouf",
                  "ranking": 3942
                },
                {
                  "player_name": "Ignacio Vazquez",
                  "ranking": 3943
                },
                {
                  "player_name": "Nicolò Cambiaghi",
                  "ranking": 3944
                },
                {
                  "player_name": "Joan Jordán",
                  "ranking": 3945
                },
                {
                  "player_name": "Arthur Atta",
                  "ranking": 3946
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 26,
          "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": 26,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.638908710234563,
            "bench_appearance_prob": 0.5290413050106619,
            "market_value_adjustment": 1.0049,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (26 historical appearances) to 22.6 expected mins (appearance prob 0.53)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.6684,
                "expected_assists": 0.0597,
                "assists": 0.0737,
                "assist_rate": 0.0737,
                "expected_goals": 0.0473,
                "goals": 0.054,
                "goal_rate": 0.054,
                "shots_on_target": 0.1408,
                "total_shots": 0.4745,
                "rating": 6.7464,
                "minutes": 22.96,
                "total_pass": 10.1668,
                "accurate_pass": 7.7987,
                "duels_won": 1.107,
                "total_long_balls": 1.2229,
                "accurate_long_balls": 0.6353,
                "total_own_half_passes": 2.7421,
                "accurate_own_half_passes": 1.9495,
                "total_opp_half_passes": 7.4247,
                "accurate_opp_half_passes": 5.8492,
                "crosses_total": 0.1518,
                "crosses_accurate": 0.0,
                "touches": 15.0819,
                "possession_lost": 3.7484,
                "dispossessed": 0.4848,
                "duels_lost": 1.5531,
                "aerial_won": 0.0578,
                "aerial_lost": 0.278,
                "interceptions": 0.2638,
                "tackles_won": 0.1531,
                "tackles": 0.2833,
                "clearances": 0.1302,
                "total_contest": 0.6674,
                "won_contest": 0.5,
                "challenges_lost": 0.1034,
                "fouls": 0.6496,
                "fouls_drawn": 0.266,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1411,
                "ball_carries": 4.5327,
                "total_progression": 28.8218,
                "progressive_carries": 0.5573,
                "shots_off_target": 0.3337
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1522,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1294,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.11,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0935,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0795,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Villarreal",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0675,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-22",
                    "opponent": "FC Barcelona",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0574,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Real Oviedo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0488,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-05",
                    "opponent": "Valencia",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0415,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Deportivo Alavés",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.0353,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.8666,
                  "creative_index": 0.464,
                  "expectedGoals": 0.1369,
                  "expectedAssists": 0.1101,
                  "onTargetScoringAttempt": 0.3675
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6684153079986572,
                    "model_output": 0.6684,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3462
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0558
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0191
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0159
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0157
                        }
                      ],
                      "others": 0.0533,
                      "total": 0.6684,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.490508
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.09711
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.032263
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.026807
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.025929
                        }
                      ],
                      "others_margin": 0.083268
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05965816602110863,
                    "model_output": 0.0597,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0348
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0032
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0028
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0028
                        },
                        {
                          "name": "goalAssist",
                          "contribution": 0.0023
                        }
                      ],
                      "others": 0.0034,
                      "total": 0.0597,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.521724
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.060742
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.050843
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.049747
                        },
                        {
                          "name": "goalAssist",
                          "margin": 0.042079
                        }
                      ],
                      "others_margin": 0.056285
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07373261451721191,
                    "model_output": 0.0737,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.018
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0069
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0062
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0052
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0049
                        }
                      ],
                      "others": 0.0075,
                      "total": 0.0737,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.230562
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.104173
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.103847
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.088482
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.076766
                        }
                      ],
                      "others_margin": 0.105096
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0473075695335865,
                    "model_output": 0.0473,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0408
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0131
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0051
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0032
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0084,
                      "total": 0.0473,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.566231
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.218872
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07955
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.053311
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.045353
                        }
                      ],
                      "others_margin": -0.164184
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05401263013482094,
                    "model_output": 0.054,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0336
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0111
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0102
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0037
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.0044,
                      "total": 0.054,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.421055
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.159192
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.146077
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.058669
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.04946
                        }
                      ],
                      "others_margin": -0.077523
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14078646898269653,
                    "model_output": 0.1408,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1649
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0273
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0149
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0075
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0064
                        }
                      ],
                      "others": -0.0185,
                      "total": 0.1408,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.705717
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.156633
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.082688
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.044355
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.039429
                        }
                      ],
                      "others_margin": -0.123266
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4744437038898468,
                    "model_output": 0.4744,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.406
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0399
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0308
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0269
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0252
                        }
                      ],
                      "others": -0.0721,
                      "total": 0.4744,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.405967
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.039905
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.030772
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.026899
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.025218
                        }
                      ],
                      "others_margin": -0.07214
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.746386528015137,
                    "model_output": 6.7464,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0982
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0677
                        },
                        {
                          "name": "rating",
                          "contribution": -0.027
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0209
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0189
                        }
                      ],
                      "others": -0.0094,
                      "total": 6.7464,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.098233
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.067692
                        },
                        {
                          "name": "rating",
                          "margin": -0.026953
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.020859
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.018913
                        }
                      ],
                      "others_margin": -0.009406
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 26,
                  "role_matches": 11,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0049, quality 0.606)",
              "stats": {
                "key_pass": 0.6717,
                "expected_assists": 0.06,
                "assists": 0.0741,
                "assist_rate": 0.0741,
                "expected_goals": 0.0475,
                "goals": 0.0543,
                "goal_rate": 0.0543,
                "shots_on_target": 0.1415,
                "total_shots": 0.4768,
                "rating": 6.7464,
                "minutes": 22.96,
                "total_pass": 10.2166,
                "accurate_pass": 7.8369,
                "duels_won": 1.1124,
                "total_long_balls": 1.2289,
                "accurate_long_balls": 0.6384,
                "total_own_half_passes": 2.7555,
                "accurate_own_half_passes": 1.9591,
                "total_opp_half_passes": 7.4611,
                "accurate_opp_half_passes": 5.8779,
                "crosses_total": 0.1525,
                "crosses_accurate": 0.0,
                "touches": 15.1558,
                "possession_lost": 3.7668,
                "dispossessed": 0.4872,
                "duels_lost": 1.5607,
                "aerial_won": 0.0581,
                "aerial_lost": 0.2794,
                "interceptions": 0.2651,
                "tackles_won": 0.1539,
                "tackles": 0.2847,
                "clearances": 0.1308,
                "total_contest": 0.6707,
                "won_contest": 0.5024,
                "challenges_lost": 0.1039,
                "fouls": 0.6528,
                "fouls_drawn": 0.2673,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1418,
                "ball_carries": 4.5549,
                "total_progression": 28.963,
                "progressive_carries": 0.56,
                "shots_off_target": 0.3353
              },
              "params": {
                "market_value_eur": 17500000,
                "quality_factor": 0.6058,
                "boost_factor": 1.0049,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.0 to 22.6 expected minutes (appearance prob 0.53)",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0592,
                "assists": 0.0731,
                "assist_rate": 0.0731,
                "expected_goals": 0.0468,
                "goals": 0.0535,
                "goal_rate": 0.0535,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1398,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64
              },
              "params": {
                "expected_minutes": 22.64,
                "projection_minutes": 22.96,
                "minutes_scale": 0.986,
                "appearance_probability": 0.529
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0592,
                "assists": 0.0731,
                "assist_rate": 0.0731,
                "expected_goals": 0.0468,
                "goals": 0.0535,
                "goal_rate": 0.0535,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1398,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0592,
                "assist_rate": 0.0731,
                "assists": 0,
                "expected_goals": 0.0468,
                "goal_rate": 0.0535,
                "goals": 0,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1398,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.86 (squad xG sum 0.7665, xG scale 1.1206, xA scale 1.1206, team xA 0.64 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0351,
                "assist_rate": 0.0731,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0535,
                "goals": 0,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0829,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.0692,
                "creation_factor": 1.1273
              },
              "params": {
                "team_lambda": 0.859,
                "squad_xg_sum": 0.7665,
                "squad_xa_sum": 0.5741,
                "team_expected_assists": 0.6433,
                "team_xa_to_xg_ratio": 0.7489,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1206,
                "xa_scale": 1.1206,
                "opponent_lambda": 0.849,
                "scoreline_reset": true,
                "appearance_weight": 0.529
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0468,
                  "after": 0.0277
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0592,
                  "after": 0.0351
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0351,
                "assist_rate": 0.0731,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0535,
                "goals": 0,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0829,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "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.0692,
                "creation_factor": 1.1273,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3941,
                "fifa_rank": 3280.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0351,
                "assist_rate": 0.0731,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0535,
                "goals": 0,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0829,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.027,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0692,
                "creation_factor": 1.1273,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.027,
                "goal_rate": 0.0535,
                "scorer_weight": 0.0296,
                "squad_weight_total": 0.9142,
                "weight_share": 0.0324,
                "finishing_factor": 1.0692,
                "appearance_weight": 0.529,
                "weight_rank": 8,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.6623,
                "expected_assists": 0.0351,
                "assist_rate": 0.0731,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0535,
                "goals": 0,
                "shots_on_target": 0.1395,
                "total_shots": 0.4701,
                "rating": 6.7464,
                "minutes": 22.64,
                "total_pass": 10.0737,
                "accurate_pass": 7.7273,
                "duels_won": 1.0968,
                "total_long_balls": 1.2117,
                "accurate_long_balls": 0.6295,
                "total_own_half_passes": 2.717,
                "accurate_own_half_passes": 1.9317,
                "total_opp_half_passes": 7.3568,
                "accurate_opp_half_passes": 5.7957,
                "crosses_total": 0.1504,
                "crosses_accurate": 0.0,
                "touches": 14.9438,
                "possession_lost": 3.7141,
                "dispossessed": 0.4872,
                "duels_lost": 1.5389,
                "aerial_won": 0.0573,
                "aerial_lost": 0.2794,
                "interceptions": 0.2614,
                "tackles_won": 0.1517,
                "tackles": 0.2807,
                "clearances": 0.129,
                "total_contest": 0.6613,
                "won_contest": 0.4954,
                "challenges_lost": 0.1039,
                "fouls": 0.6437,
                "fouls_drawn": 0.2636,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0829,
                "ball_carries": 4.4912,
                "total_progression": 28.558,
                "progressive_carries": 0.5522,
                "shots_off_target": 0.3306,
                "bench_appearance_probability": 0.529,
                "bench_expected_minutes": 22.64,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.247,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.027,
                "projected_assists": 0,
                "assist_probability": 0.034,
                "finishing_factor": 1.0692,
                "creation_factor": 1.1273,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.034,
                "assist_rate": 0.0731,
                "provider_weight": 0.0396,
                "squad_weight_total": 0.6035,
                "weight_share": 0.0656,
                "creation_factor": 1.1273,
                "appearance_weight": 0.529,
                "weight_rank": 8,
                "eligible_players": 12
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 0,
        "expected_goals": 0.86,
        "expected_assists": 0.64,
        "total_shots": 11,
        "shots_on_target": 2,
        "total_passes": 436,
        "interceptions": 7,
        "tackles": 11,
        "avg_rating": 6.84,
        "possession_estimated_pct": 49.3,
        "pressing_actions_per_90": 6.1
      }
    },
    "Alavés": {
      "formation": "5-3-2",
      "players": {
        "Ville Koski": {
          "player_id": 999178,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 16,
          "height": 185,
          "market_value": 4300000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 6.7045,
            "minutes": 89,
            "total_pass": 29,
            "accurate_pass": 25,
            "duels_won": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 20,
            "accurate_own_half_passes": 19,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 42,
            "possession_lost": 4.7201,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.1594,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0931,
            "expected_assists": 0.016,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0858,
            "ball_carries": 8,
            "total_progression": 28,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.587,
            "opponent_faced": "Hugo Burcio",
            "pressing_zone": "LWB vs CB",
            "matchup_zone": "LWB vs CB",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0889,
            "projected_assists": 0,
            "assist_probability": 0.0159,
            "finishing_factor": 1.1851,
            "creation_factor": 0.8,
            "fifa_overall": 68.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 19,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 9,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "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": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 19,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 7,
                "aerial_won": 2,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1336,
                "expected_assists": 0.008,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 42,
                "accurate_pass": 37,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7752,
                "expected_assists": 0.0052,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 30,
                "accurate_pass": 25,
                "clearances": 8,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 5.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 34,
                "interceptions": 2,
                "clearances": 6,
                "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": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 5,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 12,
                "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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 80,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0038,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 23,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 5,
                "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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 49,
                "clearances": 3,
                "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": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0228,
                "expected_assists": 0.2091,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 33,
                "accurate_pass": 29,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 3,
                "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": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 18,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 8,
                "aerial_won": 2,
                "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": 6009,
            "combined_rank_score": 4273.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 409.0,
            "sofascore_rating": 6.9333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 8138.0,
            "fifa_overall": 68.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7045,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ville Koski",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Carracedo",
                  "ranking": 6004
                },
                {
                  "player_name": "Andrés Fernández",
                  "ranking": 6005
                },
                {
                  "player_name": "Nick D'Agostino",
                  "ranking": 6006
                },
                {
                  "player_name": "Jesé",
                  "ranking": 6007
                },
                {
                  "player_name": "Alberto Jiménez",
                  "ranking": 6008
                }
              ],
              "lower": [
                {
                  "player_name": "Vallejo",
                  "ranking": 6010
                },
                {
                  "player_name": "Mauro Pittón",
                  "ranking": 6011
                },
                {
                  "player_name": "Iñigo Córdoba",
                  "ranking": 6012
                },
                {
                  "player_name": "Rubén Alcaraz",
                  "ranking": 6013
                },
                {
                  "player_name": "Nolaskoain",
                  "ranking": 6014
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.779,
          "history_matches": 13,
          "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": 13,
            "data_confidence": 0.779,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9957,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 259.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1933
            },
            "rationale": "XGBoost regressor (D_service) evaluated 13 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Alavés, rel: 0.19, 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.0463,
                "tackles": 1.2818,
                "tackles_won": 0.6456,
                "clearances": 6.2746,
                "aerial_won": 1.8676,
                "total_shots": 0.3889,
                "rating": 6.7045,
                "minutes": 89.31,
                "total_pass": 29.4884,
                "accurate_pass": 25.453,
                "duels_won": 2.3666,
                "total_long_balls": 3.1928,
                "accurate_long_balls": 1.2987,
                "total_own_half_passes": 19.9549,
                "accurate_own_half_passes": 19.295,
                "total_opp_half_passes": 9.5334,
                "accurate_opp_half_passes": 6.1579,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 42.559,
                "possession_lost": 4.7405,
                "dispossessed": 0.0,
                "duels_lost": 3.0556,
                "aerial_lost": 1.7119,
                "total_contest": 0.0704,
                "won_contest": 0.0704,
                "ball_recovery": 1.4459,
                "challenges_lost": 0.1147,
                "fouls": 1.3437,
                "fouls_drawn": 0.1588,
                "blocks": 1.0604,
                "goals": 0.1659,
                "goal_rate": 0.1659,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.1272,
                "expected_assists": 0.0154,
                "shots_on_target": 0.3536,
                "big_chances_created": 0.0,
                "xgot": 0.1172,
                "ball_carries": 7.65,
                "total_progression": 28.3535,
                "progressive_carries": 0.0704,
                "key_pass": 0.0599,
                "shots_off_target": 0.0353
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1706,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.145,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1233,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1048,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0891,
                    "rating": 5.6
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0757,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0644,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0547,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0465,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0395,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 13.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.8939,
                  "aerialWon": 1.1225,
                  "totalClearance_p90": 11.22,
                  "totalTackle": 0.785,
                  "defensive_actions": 1.7162
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0463372468948364,
                    "model_output": 1.0463,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1094
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0428
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0419
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0319
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0248
                        }
                      ],
                      "others": -0.0016,
                      "total": 1.0463,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.119602
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.04318
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.04051
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.030703
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.023992
                        }
                      ],
                      "others_margin": -0.001477
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.2817976474761963,
                    "model_output": 1.2818,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1934
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.1212
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0922
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.074
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0538
                        }
                      ],
                      "others": -0.1463,
                      "total": 1.2818,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130113
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.079555
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.061076
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.048706
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.036978
                        }
                      ],
                      "others_margin": -0.108074
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6456084251403809,
                    "model_output": 0.6456,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1094
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0572
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0536
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0427
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0393
                        }
                      ],
                      "others": -0.1252,
                      "total": 0.6456,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.120483
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.061226
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.060965
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.05139
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.049713
                        }
                      ],
                      "others_margin": -0.177122
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.274606704711914,
                    "model_output": 6.2746,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.7982
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5715
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3826
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.409
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.1783
                        }
                      ],
                      "others": 0.5023,
                      "total": 6.2746,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.20907
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.126693
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.07666
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.07592
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.031374
                        }
                      ],
                      "others_margin": 0.083438
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.8675857782363892,
                    "model_output": 1.8676,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.1789
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.176
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1658
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1338
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1348
                        }
                      ],
                      "others": 0.0588,
                      "total": 1.8676,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.139106
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.137047
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.113899
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.083313
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.077422
                        }
                      ],
                      "others_margin": 0.031939
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.38889849185943604,
                    "model_output": 0.3889,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.075
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0482
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0163
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0146
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0109
                        }
                      ],
                      "others": -0.017,
                      "total": 0.3889,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.074971
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.048238
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.016254
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.014574
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.01088
                        }
                      ],
                      "others_margin": -0.01716
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.704514026641846,
                    "model_output": 6.7045,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0459
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0157
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0148
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0144
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0136
                        }
                      ],
                      "others": -0.0054,
                      "total": 6.7045,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.04595
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.015683
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.014773
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.0144
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.013648
                        }
                      ],
                      "others_margin": -0.00528
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 13,
                  "role_matches": 10,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9957, quality 0.454)",
              "stats": {
                "interceptions": 1.0418,
                "tackles": 1.2763,
                "tackles_won": 0.6428,
                "clearances": 6.2476,
                "aerial_won": 1.8596,
                "total_shots": 0.3872,
                "rating": 6.7045,
                "minutes": 89.31,
                "total_pass": 29.3616,
                "accurate_pass": 25.3436,
                "duels_won": 2.3564,
                "total_long_balls": 3.1791,
                "accurate_long_balls": 1.2931,
                "total_own_half_passes": 19.8691,
                "accurate_own_half_passes": 19.212,
                "total_opp_half_passes": 9.4924,
                "accurate_opp_half_passes": 6.1314,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 42.376,
                "possession_lost": 4.7201,
                "dispossessed": 0.0,
                "duels_lost": 3.0425,
                "aerial_lost": 1.7045,
                "total_contest": 0.0701,
                "won_contest": 0.0701,
                "ball_recovery": 1.4397,
                "challenges_lost": 0.1142,
                "fouls": 1.3379,
                "fouls_drawn": 0.1581,
                "blocks": 1.0558,
                "goals": 0.1652,
                "goal_rate": 0.1652,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.1267,
                "expected_assists": 0.0153,
                "shots_on_target": 0.3521,
                "big_chances_created": 0.0,
                "xgot": 0.1167,
                "ball_carries": 7.6171,
                "total_progression": 28.2316,
                "progressive_carries": 0.0701,
                "key_pass": 0.0596,
                "shots_off_target": 0.0351
              },
              "params": {
                "market_value_eur": 4300000,
                "quality_factor": 0.4535,
                "boost_factor": 0.9957,
                "reference_quality": 0.505,
                "history_matches": 13,
                "history_shrink": 0.2778,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0349)",
              "stats": {
                "interceptions": 1.0413,
                "tackles": 1.2763,
                "tackles_won": 0.6323,
                "clearances": 6.2476,
                "aerial_won": 1.8596,
                "total_shots": 0.3737,
                "rating": 6.7045,
                "minutes": 89.31,
                "total_pass": 29.3616,
                "accurate_pass": 25.3436,
                "duels_won": 2.3564,
                "total_long_balls": 3.1791,
                "accurate_long_balls": 1.2931,
                "total_own_half_passes": 19.8691,
                "accurate_own_half_passes": 19.212,
                "total_opp_half_passes": 9.4924,
                "accurate_opp_half_passes": 6.1314,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 42.376,
                "possession_lost": 4.7201,
                "dispossessed": 0.0,
                "duels_lost": 3.0425,
                "aerial_lost": 1.7045,
                "total_contest": 0.0701,
                "won_contest": 0.0701,
                "ball_recovery": 1.4397,
                "challenges_lost": 0.1142,
                "fouls": 1.2912,
                "fouls_drawn": 0.1526,
                "blocks": 1.0558,
                "goals": 0.1594,
                "goal_rate": 0.1594,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.1267,
                "expected_assists": 0.0153,
                "shots_on_target": 0.3398,
                "big_chances_created": 0.0,
                "xgot": 0.1167,
                "ball_carries": 7.6171,
                "total_progression": 28.2316,
                "progressive_carries": 0.0701,
                "key_pass": 0.0596,
                "shots_off_target": 0.0351
              },
              "params": {
                "blend_weight": 0.0349,
                "history_matches": 13,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9923,
                "prior_reliability": 0.1933,
                "competition": "La Liga",
                "squad": "Alavés"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.3379,
                  "after": 1.2912
                },
                {
                  "stat": "totalShots",
                  "before": 0.3872,
                  "after": 0.3737
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3521,
                  "after": 0.3398
                },
                {
                  "stat": "wonTackle",
                  "before": 0.6428,
                  "after": 0.6323
                },
                {
                  "stat": "goals",
                  "before": 0.1652,
                  "after": 0.1594
                },
                {
                  "stat": "wasFouled",
                  "before": 0.1581,
                  "after": 0.1526
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0413,
                "tackles": 1.2763,
                "tackles_won": 0.6323,
                "clearances": 6.2476,
                "aerial_won": 1.8596,
                "total_shots": 0.3749,
                "rating": 6.7045,
                "minutes": 89.31,
                "total_pass": 29.3616,
                "accurate_pass": 25.3436,
                "duels_won": 2.3564,
                "total_long_balls": 3.1791,
                "accurate_long_balls": 1.2931,
                "total_own_half_passes": 19.8691,
                "accurate_own_half_passes": 19.212,
                "total_opp_half_passes": 9.4924,
                "accurate_opp_half_passes": 6.1314,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 42.376,
                "possession_lost": 4.7201,
                "dispossessed": 0.0,
                "duels_lost": 3.0425,
                "aerial_lost": 1.7045,
                "total_contest": 0.0701,
                "won_contest": 0.0701,
                "ball_recovery": 1.4397,
                "challenges_lost": 0.1142,
                "fouls": 1.2912,
                "fouls_drawn": 0.1526,
                "blocks": 1.0558,
                "goals": 0.1594,
                "goal_rate": 0.1594,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.1267,
                "expected_assists": 0.0153,
                "shots_on_target": 0.3398,
                "big_chances_created": 0.0,
                "xgot": 0.1167,
                "ball_carries": 7.6171,
                "total_progression": 28.2316,
                "progressive_carries": 0.0701,
                "key_pass": 0.0596,
                "shots_off_target": 0.0351
              },
              "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.0413,
                "tackles": 1.2763,
                "tackles_won": 0.6323,
                "clearances": 6.2476,
                "aerial_won": 1.8596,
                "total_shots": 0.3749,
                "rating": 6.7045,
                "minutes": 89.31,
                "total_pass": 29.3616,
                "accurate_pass": 25.3436,
                "duels_won": 2.3564,
                "total_long_balls": 3.1791,
                "accurate_long_balls": 1.2931,
                "total_own_half_passes": 19.8691,
                "accurate_own_half_passes": 19.212,
                "total_opp_half_passes": 9.4924,
                "accurate_opp_half_passes": 6.1314,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 42.376,
                "possession_lost": 4.7201,
                "dispossessed": 0.0,
                "duels_lost": 3.0425,
                "aerial_lost": 1.7045,
                "total_contest": 0.0701,
                "won_contest": 0.0701,
                "ball_recovery": 1.4397,
                "challenges_lost": 0.1142,
                "fouls": 1.2912,
                "fouls_drawn": 0.1526,
                "blocks": 1.0558,
                "goals": 0.1594,
                "goal_rate": 0.1594,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.1267,
                "expected_assists": 0.0153,
                "shots_on_target": 0.3398,
                "big_chances_created": 0.0,
                "xgot": 0.1167,
                "ball_carries": 7.6171,
                "total_progression": 28.2316,
                "progressive_carries": 0.0701,
                "key_pass": 0.0596,
                "shots_off_target": 0.0351,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.587,
                "opponent_faced": "Hugo Burcio",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Hugo Burcio",
                  "matchup_zone": "LWB vs CB"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.0413,
                "tackles": 1.2763,
                "tackles_won": 0.6323,
                "clearances": 6.2476,
                "aerial_won": 1.8596,
                "total_shots": 0.3749,
                "rating": 6.7045,
                "minutes": 89.31,
                "total_pass": 29.3616,
                "accurate_pass": 25.3436,
                "duels_won": 2.3564,
                "total_long_balls": 3.1791,
                "accurate_long_balls": 1.2931,
                "total_own_half_passes": 19.8691,
                "accurate_own_half_passes": 19.212,
                "total_opp_half_passes": 9.4924,
                "accurate_opp_half_passes": 6.1314,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 42.376,
                "possession_lost": 4.7201,
                "dispossessed": 0.0,
                "duels_lost": 3.0425,
                "aerial_lost": 1.7045,
                "total_contest": 0.0701,
                "won_contest": 0.0701,
                "ball_recovery": 1.4397,
                "challenges_lost": 0.1142,
                "fouls": 1.2912,
                "fouls_drawn": 0.1526,
                "blocks": 1.0558,
                "goal_rate": 0.1594,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1267,
                "expected_assists": 0.0153,
                "shots_on_target": 0.3398,
                "big_chances_created": 0.0,
                "xgot": 0.1167,
                "ball_carries": 7.6171,
                "total_progression": 28.2316,
                "progressive_carries": 0.0701,
                "key_pass": 0.0596,
                "shots_off_target": 0.0351,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.587,
                "opponent_faced": "Hugo Burcio",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.0413,
                "tackles": 1.2763,
                "tackles_won": 0.6323,
                "clearances": 6.2476,
                "aerial_won": 1.8596,
                "total_shots": 0.3749,
                "rating": 6.7045,
                "minutes": 89.31,
                "total_pass": 29.3616,
                "accurate_pass": 25.3436,
                "duels_won": 2.3564,
                "total_long_balls": 3.1791,
                "accurate_long_balls": 1.2931,
                "total_own_half_passes": 19.8691,
                "accurate_own_half_passes": 19.212,
                "total_opp_half_passes": 9.4924,
                "accurate_opp_half_passes": 6.1314,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 42.376,
                "possession_lost": 4.7201,
                "dispossessed": 0.0,
                "duels_lost": 3.0425,
                "aerial_lost": 1.7045,
                "total_contest": 0.0701,
                "won_contest": 0.0701,
                "ball_recovery": 1.4397,
                "challenges_lost": 0.1142,
                "fouls": 1.2912,
                "fouls_drawn": 0.1526,
                "blocks": 1.0558,
                "goal_rate": 0.1594,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0931,
                "expected_assists": 0.016,
                "shots_on_target": 0.3398,
                "big_chances_created": 0.0,
                "xgot": 0.0858,
                "ball_carries": 7.6171,
                "total_progression": 28.2316,
                "progressive_carries": 0.0701,
                "key_pass": 0.0596,
                "shots_off_target": 0.0351,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.587,
                "opponent_faced": "Hugo Burcio",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1851,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1267,
                  "after": 0.0931
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 68.0)",
              "stats": {
                "interceptions": 1.0413,
                "tackles": 1.2763,
                "tackles_won": 0.6323,
                "clearances": 6.2476,
                "aerial_won": 1.8596,
                "total_shots": 0.3749,
                "rating": 6.7045,
                "minutes": 89.31,
                "total_pass": 29.3616,
                "accurate_pass": 25.3436,
                "duels_won": 2.3564,
                "total_long_balls": 3.1791,
                "accurate_long_balls": 1.2931,
                "total_own_half_passes": 19.8691,
                "accurate_own_half_passes": 19.212,
                "total_opp_half_passes": 9.4924,
                "accurate_opp_half_passes": 6.1314,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 42.376,
                "possession_lost": 4.7201,
                "dispossessed": 0.0,
                "duels_lost": 3.0425,
                "aerial_lost": 1.7045,
                "total_contest": 0.0701,
                "won_contest": 0.0701,
                "ball_recovery": 1.4397,
                "challenges_lost": 0.1142,
                "fouls": 1.2912,
                "fouls_drawn": 0.1526,
                "blocks": 1.0558,
                "goal_rate": 0.1594,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0931,
                "expected_assists": 0.016,
                "shots_on_target": 0.3398,
                "big_chances_created": 0.0,
                "xgot": 0.0858,
                "ball_carries": 7.6171,
                "total_progression": 28.2316,
                "progressive_carries": 0.0701,
                "key_pass": 0.0596,
                "shots_off_target": 0.0351,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.587,
                "opponent_faced": "Hugo Burcio",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1851,
                "creation_factor": 0.8,
                "fifa_overall": 68.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": 6009,
                "fifa_rank": 8138.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 68.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1.0413,
                "tackles": 1.2763,
                "tackles_won": 0.6323,
                "clearances": 6.2476,
                "aerial_won": 1.8596,
                "total_shots": 0.3749,
                "rating": 6.7045,
                "minutes": 89.31,
                "total_pass": 29.3616,
                "accurate_pass": 25.3436,
                "duels_won": 2.3564,
                "total_long_balls": 3.1791,
                "accurate_long_balls": 1.2931,
                "total_own_half_passes": 19.8691,
                "accurate_own_half_passes": 19.212,
                "total_opp_half_passes": 9.4924,
                "accurate_opp_half_passes": 6.1314,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 42.376,
                "possession_lost": 4.7201,
                "dispossessed": 0.0,
                "duels_lost": 3.0425,
                "aerial_lost": 1.7045,
                "total_contest": 0.0701,
                "won_contest": 0.0701,
                "ball_recovery": 1.4397,
                "challenges_lost": 0.1142,
                "fouls": 1.2912,
                "fouls_drawn": 0.1526,
                "blocks": 1.0558,
                "goal_rate": 0.1594,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0931,
                "expected_assists": 0.016,
                "shots_on_target": 0.3398,
                "big_chances_created": 0.0,
                "xgot": 0.0858,
                "ball_carries": 7.6171,
                "total_progression": 28.2316,
                "progressive_carries": 0.0701,
                "key_pass": 0.0596,
                "shots_off_target": 0.0351,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.587,
                "opponent_faced": "Hugo Burcio",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0889,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1851,
                "creation_factor": 0.8,
                "fifa_overall": 68.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0889,
                "goal_rate": 0.1594,
                "scorer_weight": 0.1103,
                "squad_weight_total": 0.9123,
                "weight_share": 0.1209,
                "finishing_factor": 1.1851,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.0413,
                "tackles": 1.2763,
                "tackles_won": 0.6323,
                "clearances": 6.2476,
                "aerial_won": 1.8596,
                "total_shots": 0.3749,
                "rating": 6.7045,
                "minutes": 89.31,
                "total_pass": 29.3616,
                "accurate_pass": 25.3436,
                "duels_won": 2.3564,
                "total_long_balls": 3.1791,
                "accurate_long_balls": 1.2931,
                "total_own_half_passes": 19.8691,
                "accurate_own_half_passes": 19.212,
                "total_opp_half_passes": 9.4924,
                "accurate_opp_half_passes": 6.1314,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 42.376,
                "possession_lost": 4.7201,
                "dispossessed": 0.0,
                "duels_lost": 3.0425,
                "aerial_lost": 1.7045,
                "total_contest": 0.0701,
                "won_contest": 0.0701,
                "ball_recovery": 1.4397,
                "challenges_lost": 0.1142,
                "fouls": 1.2912,
                "fouls_drawn": 0.1526,
                "blocks": 1.0558,
                "goal_rate": 0.1594,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0931,
                "expected_assists": 0.016,
                "shots_on_target": 0.3398,
                "big_chances_created": 0.0,
                "xgot": 0.0858,
                "ball_carries": 7.6171,
                "total_progression": 28.2316,
                "progressive_carries": 0.0701,
                "key_pass": 0.0596,
                "shots_off_target": 0.0351,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.587,
                "opponent_faced": "Hugo Burcio",
                "pressing_zone": "LWB vs CB",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0889,
                "projected_assists": 0,
                "assist_probability": 0.0159,
                "finishing_factor": 1.1851,
                "creation_factor": 0.8,
                "fifa_overall": 68.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0159,
                "assist_rate": 0.0,
                "provider_weight": 0.0128,
                "squad_weight_total": 0.5324,
                "weight_share": 0.024,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12
              }
            }
          ]
        },
        "Jonny Otto": {
          "player_id": 235648,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 17,
          "height": 175,
          "market_value": 2100000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7547,
            "minutes": 88,
            "total_pass": 43,
            "accurate_pass": 37,
            "duels_won": 4,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 25,
            "accurate_own_half_passes": 23,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 14,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 60,
            "possession_lost": 8.724,
            "dispossessed": 0.4116,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0108,
            "expected_assists": 0.0304,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0166,
            "ball_carries": 17,
            "total_progression": 78,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Yoel Lago",
            "matchup_zone": "LWB vs CB",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0107,
            "projected_assists": 0,
            "assist_probability": 0.0299,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 84.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0151,
                "total_shots": 0,
                "total_pass": 48,
                "accurate_pass": 42,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 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": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 34,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 6,
                "duels_won": 2,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0828,
                "expected_assists": 0.0919,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 47,
                "accurate_pass": 41,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 8,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 80,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0049,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 33,
                "tackles": 3,
                "tackles_won": 3,
                "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": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0141,
                "expected_assists": 0.0012,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 19,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 9,
                "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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 70,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0135,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0108,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 30,
                "tackles": 2,
                "clearances": 2,
                "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": 14083578,
              "match_date": "2026-05-09",
              "home_team": "Elche",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 25,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083364,
              "match_date": "2026-05-02",
              "home_team": "Deportivo Alavés",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0173,
                "total_shots": 0,
                "total_pass": 57,
                "accurate_pass": 49,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 2,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083202,
              "match_date": "2026-04-25",
              "home_team": "Deportivo Alavés",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0321,
                "expected_assists": 0.086,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 72,
                "accurate_pass": 64,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 6
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 275,
            "combined_rank_score": 212.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 199.0,
            "sofascore_rating": 7.2,
            "sofascore_appearances": 3.0,
            "fifa_rank": 225.0,
            "fifa_overall": 84.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7547,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jonny Otto",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Seong-min Hwang",
                  "ranking": 270
                },
                {
                  "player_name": "Anzur Ismoilov",
                  "ranking": 271
                },
                {
                  "player_name": "Juan Cruz Gonzalez",
                  "ranking": 272
                },
                {
                  "player_name": "Matheus Bidu",
                  "ranking": 273
                },
                {
                  "player_name": "Alibek Davronov",
                  "ranking": 274
                }
              ],
              "lower": [
                {
                  "player_name": "Mauricio Isla",
                  "ranking": 276
                },
                {
                  "player_name": "Park Byeong Gyu",
                  "ranking": 277
                },
                {
                  "player_name": "Svetoslav Vutsov",
                  "ranking": 278
                },
                {
                  "player_name": "Negueba",
                  "ranking": 279
                },
                {
                  "player_name": "Léo Ortiz",
                  "ranking": 280
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9978,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 41 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.0301,
                "tackles": 1.9491,
                "tackles_won": 1.2587,
                "clearances": 2.9629,
                "aerial_won": 0.9317,
                "total_shots": 0.4218,
                "rating": 6.7547,
                "minutes": 87.61,
                "total_pass": 42.6472,
                "accurate_pass": 36.8171,
                "duels_won": 3.7009,
                "total_long_balls": 4.144,
                "accurate_long_balls": 2.3293,
                "total_own_half_passes": 25.3729,
                "accurate_own_half_passes": 23.0301,
                "total_opp_half_passes": 17.2743,
                "accurate_opp_half_passes": 13.787,
                "crosses_total": 0.418,
                "crosses_accurate": 0.2281,
                "touches": 59.6591,
                "possession_lost": 8.7432,
                "dispossessed": 0.4125,
                "duels_lost": 3.0607,
                "aerial_lost": 0.7943,
                "total_contest": 0.8916,
                "won_contest": 0.463,
                "ball_recovery": 4.4148,
                "challenges_lost": 0.8667,
                "fouls": 0.5685,
                "fouls_drawn": 0.7204,
                "blocks": 0.7104,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0147,
                "expected_assists": 0.0291,
                "shots_on_target": 0.1407,
                "big_chances_created": 0.0066,
                "xgot": 0.0226,
                "ball_carries": 16.5968,
                "total_progression": 78.5264,
                "progressive_carries": 1.251,
                "key_pass": 0.3088,
                "shots_off_target": 0.2811
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Mallorca",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.8526,
                  "aerialWon": 0.5617,
                  "totalClearance_p90": 2.924,
                  "totalTackle": 1.9558,
                  "defensive_actions": 2.9443
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0300825834274292,
                    "model_output": 1.0301,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1124
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0257
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0159
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0154
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0116
                        }
                      ],
                      "others": 0.019,
                      "total": 1.0301,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122764
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.026088
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.015796
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.015273
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.01151
                        }
                      ],
                      "others_margin": 0.018561
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.949110746383667,
                    "model_output": 1.9491,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1964
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.084
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0757
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0732
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0626
                        }
                      ],
                      "others": 0.0657,
                      "total": 1.9491,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.132041
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.051565
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.044309
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.041055
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.033823
                        }
                      ],
                      "others_margin": 0.034193
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.2586722373962402,
                    "model_output": 1.2587,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1236
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0737
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.065
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0447
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0385
                        }
                      ],
                      "others": 0.059,
                      "total": 1.2587,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.13512
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.072711
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.060017
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.039274
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.032654
                        }
                      ],
                      "others_margin": 0.04791
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.962855577468872,
                    "model_output": 2.9629,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4514
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.3504
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2846
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2089
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1141
                        }
                      ],
                      "others": -0.381,
                      "total": 2.9629,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.123548
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.094539
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.083958
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.0623
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.033564
                        }
                      ],
                      "others_margin": -0.120991
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.9317499995231628,
                    "model_output": 0.9317,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.4053
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1348
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0895
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0849
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0437
                        }
                      ],
                      "others": -0.1267,
                      "total": 0.9318,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.348481
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.129902
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.084275
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.080125
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.040493
                        }
                      ],
                      "others_margin": -0.127604
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4218316674232483,
                    "model_output": 0.4218,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0869
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0557
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0119
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0086
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0082
                        }
                      ],
                      "others": -0.0166,
                      "total": 0.4218,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.086933
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.055699
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.011882
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.00863
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.008208
                        }
                      ],
                      "others_margin": -0.016479
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.754696369171143,
                    "model_output": 6.7547,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "touches_p90",
                          "contribution": -0.0141
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0102
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.009
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0087
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0079
                        }
                      ],
                      "others": 0.0019,
                      "total": 6.7547,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": -0.014127
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.010189
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.009015
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.008693
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.007864
                        }
                      ],
                      "others_margin": 0.001852
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 41,
                  "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.9978, quality 0.437)",
              "stats": {
                "interceptions": 1.0278,
                "tackles": 1.9448,
                "tackles_won": 1.2559,
                "clearances": 2.9563,
                "aerial_won": 0.9297,
                "total_shots": 0.4209,
                "rating": 6.7547,
                "minutes": 87.61,
                "total_pass": 42.5534,
                "accurate_pass": 36.7361,
                "duels_won": 3.6928,
                "total_long_balls": 4.1349,
                "accurate_long_balls": 2.3242,
                "total_own_half_passes": 25.3171,
                "accurate_own_half_passes": 22.9794,
                "total_opp_half_passes": 17.2363,
                "accurate_opp_half_passes": 13.7567,
                "crosses_total": 0.4171,
                "crosses_accurate": 0.2276,
                "touches": 59.5278,
                "possession_lost": 8.724,
                "dispossessed": 0.4116,
                "duels_lost": 3.054,
                "aerial_lost": 0.7926,
                "total_contest": 0.8896,
                "won_contest": 0.462,
                "ball_recovery": 4.4051,
                "challenges_lost": 0.8648,
                "fouls": 0.5672,
                "fouls_drawn": 0.7188,
                "blocks": 0.7088,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0147,
                "expected_assists": 0.029,
                "shots_on_target": 0.1404,
                "big_chances_created": 0.0066,
                "xgot": 0.0226,
                "ball_carries": 16.5603,
                "total_progression": 78.3536,
                "progressive_carries": 1.2482,
                "key_pass": 0.3081,
                "shots_off_target": 0.2805
              },
              "params": {
                "market_value_eur": 2100000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9978,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0278,
                "tackles": 1.9448,
                "tackles_won": 1.2559,
                "clearances": 2.9563,
                "aerial_won": 0.9297,
                "total_shots": 0.4209,
                "rating": 6.7547,
                "minutes": 87.61,
                "total_pass": 42.5534,
                "accurate_pass": 36.7361,
                "duels_won": 3.6928,
                "total_long_balls": 4.1349,
                "accurate_long_balls": 2.3242,
                "total_own_half_passes": 25.3171,
                "accurate_own_half_passes": 22.9794,
                "total_opp_half_passes": 17.2363,
                "accurate_opp_half_passes": 13.7567,
                "crosses_total": 0.4171,
                "crosses_accurate": 0.2276,
                "touches": 59.5278,
                "possession_lost": 8.724,
                "dispossessed": 0.4116,
                "duels_lost": 3.054,
                "aerial_lost": 0.7926,
                "total_contest": 0.8896,
                "won_contest": 0.462,
                "ball_recovery": 4.4051,
                "challenges_lost": 0.8648,
                "fouls": 0.5672,
                "fouls_drawn": 0.7188,
                "blocks": 0.7088,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0147,
                "expected_assists": 0.029,
                "shots_on_target": 0.1404,
                "big_chances_created": 0.0066,
                "xgot": 0.0226,
                "ball_carries": 16.5603,
                "total_progression": 78.3536,
                "progressive_carries": 1.2482,
                "key_pass": 0.3081,
                "shots_off_target": 0.2805
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 1.0278,
                "tackles": 1.9448,
                "tackles_won": 1.2559,
                "clearances": 2.9563,
                "aerial_won": 0.9297,
                "total_shots": 0.4209,
                "rating": 6.7547,
                "minutes": 87.61,
                "total_pass": 42.5534,
                "accurate_pass": 36.7361,
                "duels_won": 3.6928,
                "total_long_balls": 4.1349,
                "accurate_long_balls": 2.3242,
                "total_own_half_passes": 25.3171,
                "accurate_own_half_passes": 22.9794,
                "total_opp_half_passes": 17.2363,
                "accurate_opp_half_passes": 13.7567,
                "crosses_total": 0.4171,
                "crosses_accurate": 0.2276,
                "touches": 59.5278,
                "possession_lost": 8.724,
                "dispossessed": 0.4116,
                "duels_lost": 3.054,
                "aerial_lost": 0.7926,
                "total_contest": 0.8896,
                "won_contest": 0.462,
                "ball_recovery": 4.4051,
                "challenges_lost": 0.8648,
                "fouls": 0.5672,
                "fouls_drawn": 0.7188,
                "blocks": 0.7088,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0147,
                "expected_assists": 0.029,
                "shots_on_target": 0.1404,
                "big_chances_created": 0.0066,
                "xgot": 0.0226,
                "ball_carries": 16.5603,
                "total_progression": 78.3536,
                "progressive_carries": 1.2482,
                "key_pass": 0.3081,
                "shots_off_target": 0.2805,
                "opponent_faced": "Yoel Lago",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Yoel Lago",
                  "matchup_zone": "LWB vs CB"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.0278,
                "tackles": 1.9448,
                "tackles_won": 1.2559,
                "clearances": 2.9563,
                "aerial_won": 0.9297,
                "total_shots": 0.4209,
                "rating": 6.7547,
                "minutes": 87.61,
                "total_pass": 42.5534,
                "accurate_pass": 36.7361,
                "duels_won": 3.6928,
                "total_long_balls": 4.1349,
                "accurate_long_balls": 2.3242,
                "total_own_half_passes": 25.3171,
                "accurate_own_half_passes": 22.9794,
                "total_opp_half_passes": 17.2363,
                "accurate_opp_half_passes": 13.7567,
                "crosses_total": 0.4171,
                "crosses_accurate": 0.2276,
                "touches": 59.5278,
                "possession_lost": 8.724,
                "dispossessed": 0.4116,
                "duels_lost": 3.054,
                "aerial_lost": 0.7926,
                "total_contest": 0.8896,
                "won_contest": 0.462,
                "ball_recovery": 4.4051,
                "challenges_lost": 0.8648,
                "fouls": 0.5672,
                "fouls_drawn": 0.7188,
                "blocks": 0.7088,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0147,
                "expected_assists": 0.029,
                "shots_on_target": 0.1404,
                "big_chances_created": 0.0066,
                "xgot": 0.0226,
                "ball_carries": 16.5603,
                "total_progression": 78.3536,
                "progressive_carries": 1.2482,
                "key_pass": 0.3081,
                "shots_off_target": 0.2805,
                "opponent_faced": "Yoel Lago",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.0278,
                "tackles": 1.9448,
                "tackles_won": 1.2559,
                "clearances": 2.9563,
                "aerial_won": 0.9297,
                "total_shots": 0.4209,
                "rating": 6.7547,
                "minutes": 87.61,
                "total_pass": 42.5534,
                "accurate_pass": 36.7361,
                "duels_won": 3.6928,
                "total_long_balls": 4.1349,
                "accurate_long_balls": 2.3242,
                "total_own_half_passes": 25.3171,
                "accurate_own_half_passes": 22.9794,
                "total_opp_half_passes": 17.2363,
                "accurate_opp_half_passes": 13.7567,
                "crosses_total": 0.4171,
                "crosses_accurate": 0.2276,
                "touches": 59.5278,
                "possession_lost": 8.724,
                "dispossessed": 0.4116,
                "duels_lost": 3.054,
                "aerial_lost": 0.7926,
                "total_contest": 0.8896,
                "won_contest": 0.462,
                "ball_recovery": 4.4051,
                "challenges_lost": 0.8648,
                "fouls": 0.5672,
                "fouls_drawn": 0.7188,
                "blocks": 0.7088,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0108,
                "expected_assists": 0.0304,
                "shots_on_target": 0.1404,
                "big_chances_created": 0.0066,
                "xgot": 0.0166,
                "ball_carries": 16.5603,
                "total_progression": 78.3536,
                "progressive_carries": 1.2482,
                "key_pass": 0.3081,
                "shots_off_target": 0.2805,
                "opponent_faced": "Yoel Lago",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "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 84.0)",
              "stats": {
                "interceptions": 1.0278,
                "tackles": 1.9448,
                "tackles_won": 1.2559,
                "clearances": 2.9563,
                "aerial_won": 0.9297,
                "total_shots": 0.4209,
                "rating": 6.7547,
                "minutes": 87.61,
                "total_pass": 42.5534,
                "accurate_pass": 36.7361,
                "duels_won": 3.6928,
                "total_long_balls": 4.1349,
                "accurate_long_balls": 2.3242,
                "total_own_half_passes": 25.3171,
                "accurate_own_half_passes": 22.9794,
                "total_opp_half_passes": 17.2363,
                "accurate_opp_half_passes": 13.7567,
                "crosses_total": 0.4171,
                "crosses_accurate": 0.2276,
                "touches": 59.5278,
                "possession_lost": 8.724,
                "dispossessed": 0.4116,
                "duels_lost": 3.054,
                "aerial_lost": 0.7926,
                "total_contest": 0.8896,
                "won_contest": 0.462,
                "ball_recovery": 4.4051,
                "challenges_lost": 0.8648,
                "fouls": 0.5672,
                "fouls_drawn": 0.7188,
                "blocks": 0.7088,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0108,
                "expected_assists": 0.0304,
                "shots_on_target": 0.1404,
                "big_chances_created": 0.0066,
                "xgot": 0.0166,
                "ball_carries": 16.5603,
                "total_progression": 78.3536,
                "progressive_carries": 1.2482,
                "key_pass": 0.3081,
                "shots_off_target": 0.2805,
                "opponent_faced": "Yoel Lago",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 84.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": 275,
                "fifa_rank": 225.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 84.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1.0278,
                "tackles": 1.9448,
                "tackles_won": 1.2559,
                "clearances": 2.9563,
                "aerial_won": 0.9297,
                "total_shots": 0.4209,
                "rating": 6.7547,
                "minutes": 87.61,
                "total_pass": 42.5534,
                "accurate_pass": 36.7361,
                "duels_won": 3.6928,
                "total_long_balls": 4.1349,
                "accurate_long_balls": 2.3242,
                "total_own_half_passes": 25.3171,
                "accurate_own_half_passes": 22.9794,
                "total_opp_half_passes": 17.2363,
                "accurate_opp_half_passes": 13.7567,
                "crosses_total": 0.4171,
                "crosses_accurate": 0.2276,
                "touches": 59.5278,
                "possession_lost": 8.724,
                "dispossessed": 0.4116,
                "duels_lost": 3.054,
                "aerial_lost": 0.7926,
                "total_contest": 0.8896,
                "won_contest": 0.462,
                "ball_recovery": 4.4051,
                "challenges_lost": 0.8648,
                "fouls": 0.5672,
                "fouls_drawn": 0.7188,
                "blocks": 0.7088,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0108,
                "expected_assists": 0.0304,
                "shots_on_target": 0.1404,
                "big_chances_created": 0.0066,
                "xgot": 0.0166,
                "ball_carries": 16.5603,
                "total_progression": 78.3536,
                "progressive_carries": 1.2482,
                "key_pass": 0.3081,
                "shots_off_target": 0.2805,
                "opponent_faced": "Yoel Lago",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0107,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 84.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0107,
                "goal_rate": 0.0,
                "scorer_weight": 0.0086,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0095,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.0278,
                "tackles": 1.9448,
                "tackles_won": 1.2559,
                "clearances": 2.9563,
                "aerial_won": 0.9297,
                "total_shots": 0.4209,
                "rating": 6.7547,
                "minutes": 87.61,
                "total_pass": 42.5534,
                "accurate_pass": 36.7361,
                "duels_won": 3.6928,
                "total_long_balls": 4.1349,
                "accurate_long_balls": 2.3242,
                "total_own_half_passes": 25.3171,
                "accurate_own_half_passes": 22.9794,
                "total_opp_half_passes": 17.2363,
                "accurate_opp_half_passes": 13.7567,
                "crosses_total": 0.4171,
                "crosses_accurate": 0.2276,
                "touches": 59.5278,
                "possession_lost": 8.724,
                "dispossessed": 0.4116,
                "duels_lost": 3.054,
                "aerial_lost": 0.7926,
                "total_contest": 0.8896,
                "won_contest": 0.462,
                "ball_recovery": 4.4051,
                "challenges_lost": 0.8648,
                "fouls": 0.5672,
                "fouls_drawn": 0.7188,
                "blocks": 0.7088,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0108,
                "expected_assists": 0.0304,
                "shots_on_target": 0.1404,
                "big_chances_created": 0.0066,
                "xgot": 0.0166,
                "ball_carries": 16.5603,
                "total_progression": 78.3536,
                "progressive_carries": 1.2482,
                "key_pass": 0.3081,
                "shots_off_target": 0.2805,
                "opponent_faced": "Yoel Lago",
                "matchup_zone": "LWB vs CB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0107,
                "projected_assists": 0,
                "assist_probability": 0.0299,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 84.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0299,
                "assist_rate": 0.0,
                "provider_weight": 0.0243,
                "squad_weight_total": 0.5324,
                "weight_share": 0.0457,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12
              }
            }
          ]
        },
        "Nahuel Tenaglia": {
          "player_id": 896073,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 14,
          "height": 182,
          "market_value": 3200000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.7911,
            "minutes": 86,
            "total_pass": 30,
            "accurate_pass": 24,
            "duels_won": 5,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 15,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 9,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 51,
            "possession_lost": 9.6832,
            "dispossessed": 0.6692,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0829,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.026,
            "expected_assists": 0.0357,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0326,
            "ball_carries": 11,
            "total_progression": 53,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Iago Aspas",
            "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.0257,
            "projected_assists": 0,
            "assist_probability": 0.0351,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0028,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 32,
                "tackles": 6,
                "tackles_won": 5,
                "interceptions": 3,
                "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": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 17,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 2,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0166,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2619,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0533,
                "expected_assists": 0.0113,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 35,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 5,
                "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": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 5,
                "aerial_won": 2,
                "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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0147,
                "expected_assists": 0.0129,
                "total_shots": 1,
                "total_pass": 29,
                "accurate_pass": 21,
                "tackles": 2,
                "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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 8.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3096,
                "expected_assists": 0.0325,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 61,
                "accurate_pass": 52,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0566,
                "expected_assists": 0.0429,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 37,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 2,
                "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": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0587,
                "expected_assists": 0.0086,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 20,
                "accurate_pass": 17,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 4,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2146,
            "combined_rank_score": 809.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 62.0,
            "sofascore_rating": 7.65,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1557.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7911,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nahuel Tenaglia",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kaito Taniguchi",
                  "ranking": 2141
                },
                {
                  "player_name": "Seok-jun Hong",
                  "ranking": 2142
                },
                {
                  "player_name": "Álvaro Valles",
                  "ranking": 2143
                },
                {
                  "player_name": "Lazar Samardžić",
                  "ranking": 2144
                },
                {
                  "player_name": "Giovanny Avalos",
                  "ranking": 2145
                }
              ],
              "lower": [
                {
                  "player_name": "Breel Embolo",
                  "ranking": 2147
                },
                {
                  "player_name": "Sergi Cardona",
                  "ranking": 2148
                },
                {
                  "player_name": "Kim Geon-oh",
                  "ranking": 2149
                },
                {
                  "player_name": "Ben Chilwell",
                  "ranking": 2150
                },
                {
                  "player_name": "Nicholas Duarte",
                  "ranking": 2151
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "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.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.998,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 270.0,
              "goals_per90": 0.3333333333333333,
              "assists_per90": 0.0,
              "shots_per90": 1.33,
              "shots_on_target_pct": 25.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (D_service) evaluated 44 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Alavés, rel: 0.20, gls/90: 0.3333333333333333, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.1846,
                "tackles": 2.1843,
                "tackles_won": 1.3925,
                "clearances": 3.4253,
                "aerial_won": 0.9911,
                "total_shots": 0.6331,
                "rating": 6.7911,
                "minutes": 86.02,
                "total_pass": 30.0263,
                "accurate_pass": 24.5104,
                "duels_won": 4.9508,
                "total_long_balls": 4.2043,
                "accurate_long_balls": 1.663,
                "total_own_half_passes": 16.6409,
                "accurate_own_half_passes": 15.2156,
                "total_opp_half_passes": 13.3854,
                "accurate_opp_half_passes": 9.2947,
                "crosses_total": 0.9594,
                "crosses_accurate": 0.1101,
                "touches": 50.857,
                "possession_lost": 9.7026,
                "dispossessed": 0.6705,
                "duels_lost": 4.123,
                "aerial_lost": 1.1096,
                "total_contest": 1.3261,
                "won_contest": 0.3689,
                "ball_recovery": 3.7487,
                "challenges_lost": 0.6355,
                "fouls": 0.785,
                "fouls_drawn": 1.3612,
                "blocks": 0.6233,
                "goals": 0.0799,
                "goal_rate": 0.0799,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0355,
                "expected_assists": 0.0341,
                "shots_on_target": 0.2483,
                "big_chances_created": 0.1105,
                "xgot": 0.0444,
                "ball_carries": 11.2807,
                "total_progression": 52.8121,
                "progressive_carries": 1.2155,
                "key_pass": 0.2586,
                "shots_off_target": 0.3848
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 8.6
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.686,
                  "aerialWon": 0.8615,
                  "totalClearance_p90": 4.0551,
                  "totalTackle": 2.4868,
                  "defensive_actions": 4.2482
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.184632420539856,
                    "model_output": 1.1846,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1052
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0951
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0323
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0161
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.016
                        }
                      ],
                      "others": 0.059,
                      "total": 1.1846,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.115343
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.093924
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.029953
                        },
                        {
                          "name": "touches",
                          "margin": 0.014597
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.014273
                        }
                      ],
                      "others_margin": 0.05115
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 2.1842875480651855,
                    "model_output": 2.1843,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1973
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1136
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.1115
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.1184
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.087
                        }
                      ],
                      "others": 0.165,
                      "total": 2.1843,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.132602
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.069038
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.06346
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.063211
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.044035
                        }
                      ],
                      "others_margin": 0.078558
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.3925178050994873,
                    "model_output": 1.3925,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1336
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.096
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0852
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0642
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0467
                        }
                      ],
                      "others": 0.1126,
                      "total": 1.3925,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.145271
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.092793
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.075658
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.053469
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.037177
                        }
                      ],
                      "others_margin": 0.084373
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.425288438796997,
                    "model_output": 3.4253,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4494
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2799
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.1222
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.1035
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.084
                        }
                      ],
                      "others": -0.427,
                      "total": 3.4253,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.123031
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.069611
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.029798
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.025963
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.021574
                        }
                      ],
                      "others_margin": -0.11748
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.9910972118377686,
                    "model_output": 0.9911,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.2788
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1451
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0673
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0603
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0519
                        }
                      ],
                      "others": -0.2076,
                      "total": 0.9911,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.226165
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124077
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.052679
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.047054
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.042374
                        }
                      ],
                      "others_margin": -0.19024
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6330986618995667,
                    "model_output": 0.6331,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0642
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0309
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0263
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0171
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0145
                        }
                      ],
                      "others": 0.0056,
                      "total": 0.6331,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.064169
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.03093
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.02625
                        },
                        {
                          "name": "rating",
                          "margin": 0.017085
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.014519
                        }
                      ],
                      "others_margin": 0.005645
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.791120529174805,
                    "model_output": 6.7911,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0176
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0169
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0108
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0093
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0076
                        }
                      ],
                      "others": -0.0004,
                      "total": 6.7911,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.017618
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.016874
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.010797
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.009344
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.007591
                        }
                      ],
                      "others_margin": -0.000341
                    }
                  }
                ],
                "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.9980, quality 0.440)",
              "stats": {
                "interceptions": 1.1823,
                "tackles": 2.1799,
                "tackles_won": 1.3897,
                "clearances": 3.4184,
                "aerial_won": 0.9891,
                "total_shots": 0.6318,
                "rating": 6.7911,
                "minutes": 86.02,
                "total_pass": 29.9662,
                "accurate_pass": 24.4614,
                "duels_won": 4.9409,
                "total_long_balls": 4.1959,
                "accurate_long_balls": 1.6597,
                "total_own_half_passes": 16.6076,
                "accurate_own_half_passes": 15.1852,
                "total_opp_half_passes": 13.3586,
                "accurate_opp_half_passes": 9.2761,
                "crosses_total": 0.9575,
                "crosses_accurate": 0.1099,
                "touches": 50.7553,
                "possession_lost": 9.6832,
                "dispossessed": 0.6692,
                "duels_lost": 4.1148,
                "aerial_lost": 1.1074,
                "total_contest": 1.3234,
                "won_contest": 0.3682,
                "ball_recovery": 3.7412,
                "challenges_lost": 0.6342,
                "fouls": 0.7834,
                "fouls_drawn": 1.3585,
                "blocks": 0.6221,
                "goals": 0.0797,
                "goal_rate": 0.0797,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0354,
                "expected_assists": 0.034,
                "shots_on_target": 0.2478,
                "big_chances_created": 0.1103,
                "xgot": 0.0443,
                "ball_carries": 11.2581,
                "total_progression": 52.7065,
                "progressive_carries": 1.2131,
                "key_pass": 0.2581,
                "shots_off_target": 0.384
              },
              "params": {
                "market_value_eur": 3200000,
                "quality_factor": 0.4399,
                "boost_factor": 0.998,
                "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": {
                "interceptions": 1.1877,
                "tackles": 2.1799,
                "tackles_won": 1.3882,
                "clearances": 3.4184,
                "aerial_won": 0.9891,
                "total_shots": 0.6403,
                "rating": 6.7911,
                "minutes": 86.02,
                "total_pass": 29.9662,
                "accurate_pass": 24.4614,
                "duels_won": 4.9409,
                "total_long_balls": 4.1959,
                "accurate_long_balls": 1.6597,
                "total_own_half_passes": 16.6076,
                "accurate_own_half_passes": 15.1852,
                "total_opp_half_passes": 13.3586,
                "accurate_opp_half_passes": 9.2761,
                "crosses_total": 0.9533,
                "crosses_accurate": 0.1099,
                "touches": 50.7553,
                "possession_lost": 9.6832,
                "dispossessed": 0.6692,
                "duels_lost": 4.1148,
                "aerial_lost": 1.1074,
                "total_contest": 1.3234,
                "won_contest": 0.3682,
                "ball_recovery": 3.7412,
                "challenges_lost": 0.6342,
                "fouls": 0.7899,
                "fouls_drawn": 1.3532,
                "blocks": 0.6221,
                "goals": 0.0829,
                "goal_rate": 0.0829,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0354,
                "expected_assists": 0.034,
                "shots_on_target": 0.2487,
                "big_chances_created": 0.1103,
                "xgot": 0.0443,
                "ball_carries": 11.2581,
                "total_progression": 52.7065,
                "progressive_carries": 1.2131,
                "key_pass": 0.2581,
                "shots_off_target": 0.384
              },
              "params": {
                "blend_weight": 0.0133,
                "history_matches": 44,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9558,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Alavés"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.6318,
                  "after": 0.6403
                },
                {
                  "stat": "fouls",
                  "before": 0.7834,
                  "after": 0.7899
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.1823,
                  "after": 1.1877
                },
                {
                  "stat": "wasFouled",
                  "before": 1.3585,
                  "after": 1.3532
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1877,
                "tackles": 2.1799,
                "tackles_won": 1.3882,
                "clearances": 3.4184,
                "aerial_won": 0.9891,
                "total_shots": 0.6403,
                "rating": 6.7911,
                "minutes": 86.02,
                "total_pass": 29.9662,
                "accurate_pass": 24.4614,
                "duels_won": 4.9409,
                "total_long_balls": 4.1959,
                "accurate_long_balls": 1.6597,
                "total_own_half_passes": 16.6076,
                "accurate_own_half_passes": 15.1852,
                "total_opp_half_passes": 13.3586,
                "accurate_opp_half_passes": 9.2761,
                "crosses_total": 0.9533,
                "crosses_accurate": 0.1099,
                "touches": 50.7553,
                "possession_lost": 9.6832,
                "dispossessed": 0.6692,
                "duels_lost": 4.1148,
                "aerial_lost": 1.1074,
                "total_contest": 1.3234,
                "won_contest": 0.3682,
                "ball_recovery": 3.7412,
                "challenges_lost": 0.6342,
                "fouls": 0.7899,
                "fouls_drawn": 1.3532,
                "blocks": 0.6221,
                "goals": 0.0829,
                "goal_rate": 0.0829,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0354,
                "expected_assists": 0.034,
                "shots_on_target": 0.2487,
                "big_chances_created": 0.1103,
                "xgot": 0.0443,
                "ball_carries": 11.2581,
                "total_progression": 52.7065,
                "progressive_carries": 1.2131,
                "key_pass": 0.2581,
                "shots_off_target": 0.384
              },
              "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.1877,
                "tackles": 2.1799,
                "tackles_won": 1.3882,
                "clearances": 3.4184,
                "aerial_won": 0.9891,
                "total_shots": 0.6403,
                "rating": 6.7911,
                "minutes": 86.02,
                "total_pass": 29.9662,
                "accurate_pass": 24.4614,
                "duels_won": 4.9409,
                "total_long_balls": 4.1959,
                "accurate_long_balls": 1.6597,
                "total_own_half_passes": 16.6076,
                "accurate_own_half_passes": 15.1852,
                "total_opp_half_passes": 13.3586,
                "accurate_opp_half_passes": 9.2761,
                "crosses_total": 0.9533,
                "crosses_accurate": 0.1099,
                "touches": 50.7553,
                "possession_lost": 9.6832,
                "dispossessed": 0.6692,
                "duels_lost": 4.1148,
                "aerial_lost": 1.1074,
                "total_contest": 1.3234,
                "won_contest": 0.3682,
                "ball_recovery": 3.7412,
                "challenges_lost": 0.6342,
                "fouls": 0.7899,
                "fouls_drawn": 1.3532,
                "blocks": 0.6221,
                "goals": 0.0829,
                "goal_rate": 0.0829,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0354,
                "expected_assists": 0.034,
                "shots_on_target": 0.2487,
                "big_chances_created": 0.1103,
                "xgot": 0.0443,
                "ball_carries": 11.2581,
                "total_progression": 52.7065,
                "progressive_carries": 1.2131,
                "key_pass": 0.2581,
                "shots_off_target": 0.384,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Iago Aspas",
                "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": "Iago Aspas",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1877,
                "tackles": 2.1799,
                "tackles_won": 1.3882,
                "clearances": 3.4184,
                "aerial_won": 0.9891,
                "total_shots": 0.6403,
                "rating": 6.7911,
                "minutes": 86.02,
                "total_pass": 29.9662,
                "accurate_pass": 24.4614,
                "duels_won": 4.9409,
                "total_long_balls": 4.1959,
                "accurate_long_balls": 1.6597,
                "total_own_half_passes": 16.6076,
                "accurate_own_half_passes": 15.1852,
                "total_opp_half_passes": 13.3586,
                "accurate_opp_half_passes": 9.2761,
                "crosses_total": 0.9533,
                "crosses_accurate": 0.1099,
                "touches": 50.7553,
                "possession_lost": 9.6832,
                "dispossessed": 0.6692,
                "duels_lost": 4.1148,
                "aerial_lost": 1.1074,
                "total_contest": 1.3234,
                "won_contest": 0.3682,
                "ball_recovery": 3.7412,
                "challenges_lost": 0.6342,
                "fouls": 0.7899,
                "fouls_drawn": 1.3532,
                "blocks": 0.6221,
                "goal_rate": 0.0829,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0354,
                "expected_assists": 0.034,
                "shots_on_target": 0.2487,
                "big_chances_created": 0.1103,
                "xgot": 0.0443,
                "ball_carries": 11.2581,
                "total_progression": 52.7065,
                "progressive_carries": 1.2131,
                "key_pass": 0.2581,
                "shots_off_target": 0.384,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Iago Aspas",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.1877,
                "tackles": 2.1799,
                "tackles_won": 1.3882,
                "clearances": 3.4184,
                "aerial_won": 0.9891,
                "total_shots": 0.6403,
                "rating": 6.7911,
                "minutes": 86.02,
                "total_pass": 29.9662,
                "accurate_pass": 24.4614,
                "duels_won": 4.9409,
                "total_long_balls": 4.1959,
                "accurate_long_balls": 1.6597,
                "total_own_half_passes": 16.6076,
                "accurate_own_half_passes": 15.1852,
                "total_opp_half_passes": 13.3586,
                "accurate_opp_half_passes": 9.2761,
                "crosses_total": 0.9533,
                "crosses_accurate": 0.1099,
                "touches": 50.7553,
                "possession_lost": 9.6832,
                "dispossessed": 0.6692,
                "duels_lost": 4.1148,
                "aerial_lost": 1.1074,
                "total_contest": 1.3234,
                "won_contest": 0.3682,
                "ball_recovery": 3.7412,
                "challenges_lost": 0.6342,
                "fouls": 0.7899,
                "fouls_drawn": 1.3532,
                "blocks": 0.6221,
                "goal_rate": 0.0829,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.026,
                "expected_assists": 0.0357,
                "shots_on_target": 0.2487,
                "big_chances_created": 0.1103,
                "xgot": 0.0326,
                "ball_carries": 11.2581,
                "total_progression": 52.7065,
                "progressive_carries": 1.2131,
                "key_pass": 0.2581,
                "shots_off_target": 0.384,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Iago Aspas",
                "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": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0354,
                  "after": 0.026
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 77.0)",
              "stats": {
                "interceptions": 1.1877,
                "tackles": 2.1799,
                "tackles_won": 1.3882,
                "clearances": 3.4184,
                "aerial_won": 0.9891,
                "total_shots": 0.6403,
                "rating": 6.7911,
                "minutes": 86.02,
                "total_pass": 29.9662,
                "accurate_pass": 24.4614,
                "duels_won": 4.9409,
                "total_long_balls": 4.1959,
                "accurate_long_balls": 1.6597,
                "total_own_half_passes": 16.6076,
                "accurate_own_half_passes": 15.1852,
                "total_opp_half_passes": 13.3586,
                "accurate_opp_half_passes": 9.2761,
                "crosses_total": 0.9533,
                "crosses_accurate": 0.1099,
                "touches": 50.7553,
                "possession_lost": 9.6832,
                "dispossessed": 0.6692,
                "duels_lost": 4.1148,
                "aerial_lost": 1.1074,
                "total_contest": 1.3234,
                "won_contest": 0.3682,
                "ball_recovery": 3.7412,
                "challenges_lost": 0.6342,
                "fouls": 0.7899,
                "fouls_drawn": 1.3532,
                "blocks": 0.6221,
                "goal_rate": 0.0829,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.026,
                "expected_assists": 0.0357,
                "shots_on_target": 0.2487,
                "big_chances_created": 0.1103,
                "xgot": 0.0326,
                "ball_carries": 11.2581,
                "total_progression": 52.7065,
                "progressive_carries": 1.2131,
                "key_pass": 0.2581,
                "shots_off_target": 0.384,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Iago Aspas",
                "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": 77.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": 2146,
                "fifa_rank": 1557.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1.1877,
                "tackles": 2.1799,
                "tackles_won": 1.3882,
                "clearances": 3.4184,
                "aerial_won": 0.9891,
                "total_shots": 0.6403,
                "rating": 6.7911,
                "minutes": 86.02,
                "total_pass": 29.9662,
                "accurate_pass": 24.4614,
                "duels_won": 4.9409,
                "total_long_balls": 4.1959,
                "accurate_long_balls": 1.6597,
                "total_own_half_passes": 16.6076,
                "accurate_own_half_passes": 15.1852,
                "total_opp_half_passes": 13.3586,
                "accurate_opp_half_passes": 9.2761,
                "crosses_total": 0.9533,
                "crosses_accurate": 0.1099,
                "touches": 50.7553,
                "possession_lost": 9.6832,
                "dispossessed": 0.6692,
                "duels_lost": 4.1148,
                "aerial_lost": 1.1074,
                "total_contest": 1.3234,
                "won_contest": 0.3682,
                "ball_recovery": 3.7412,
                "challenges_lost": 0.6342,
                "fouls": 0.7899,
                "fouls_drawn": 1.3532,
                "blocks": 0.6221,
                "goal_rate": 0.0829,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.026,
                "expected_assists": 0.0357,
                "shots_on_target": 0.2487,
                "big_chances_created": 0.1103,
                "xgot": 0.0326,
                "ball_carries": 11.2581,
                "total_progression": 52.7065,
                "progressive_carries": 1.2131,
                "key_pass": 0.2581,
                "shots_off_target": 0.384,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Iago Aspas",
                "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.0257,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0257,
                "goal_rate": 0.0829,
                "scorer_weight": 0.0325,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0356,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.1877,
                "tackles": 2.1799,
                "tackles_won": 1.3882,
                "clearances": 3.4184,
                "aerial_won": 0.9891,
                "total_shots": 0.6403,
                "rating": 6.7911,
                "minutes": 86.02,
                "total_pass": 29.9662,
                "accurate_pass": 24.4614,
                "duels_won": 4.9409,
                "total_long_balls": 4.1959,
                "accurate_long_balls": 1.6597,
                "total_own_half_passes": 16.6076,
                "accurate_own_half_passes": 15.1852,
                "total_opp_half_passes": 13.3586,
                "accurate_opp_half_passes": 9.2761,
                "crosses_total": 0.9533,
                "crosses_accurate": 0.1099,
                "touches": 50.7553,
                "possession_lost": 9.6832,
                "dispossessed": 0.6692,
                "duels_lost": 4.1148,
                "aerial_lost": 1.1074,
                "total_contest": 1.3234,
                "won_contest": 0.3682,
                "ball_recovery": 3.7412,
                "challenges_lost": 0.6342,
                "fouls": 0.7899,
                "fouls_drawn": 1.3532,
                "blocks": 0.6221,
                "goal_rate": 0.0829,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.026,
                "expected_assists": 0.0357,
                "shots_on_target": 0.2487,
                "big_chances_created": 0.1103,
                "xgot": 0.0326,
                "ball_carries": 11.2581,
                "total_progression": 52.7065,
                "progressive_carries": 1.2131,
                "key_pass": 0.2581,
                "shots_off_target": 0.384,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Iago Aspas",
                "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.0257,
                "projected_assists": 0,
                "assist_probability": 0.0351,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0351,
                "assist_rate": 0.0,
                "provider_weight": 0.0286,
                "squad_weight_total": 0.5324,
                "weight_share": 0.0536,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12
              }
            }
          ]
        },
        "Antonio Sivera": {
          "player_id": 369004,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 184,
          "market_value": 5600000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.1556,
            "rating": 7.0451,
            "minutes": 90,
            "total_pass": 27,
            "accurate_pass": 15,
            "total_long_balls": 22,
            "accurate_long_balls": 10,
            "touches": 39,
            "clearances": 2,
            "ball_recovery": 10,
            "high_claims": 1,
            "punches": 1.045,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 12.6446,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 6,
            "gk_engine_opponent_lambda": 0.8347,
            "shots_faced": 8.2,
            "expected_saves": 2.01,
            "high_pressure_saves": 0.69,
            "opponent_faced": "Ferrán Jutglà, Iago Aspas",
            "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": 85.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 13,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 14,
                "saves": 5,
                "goals_prevented": -0.8983
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 8.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0028,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 13,
                "ball_recovery": 15,
                "saves": 6,
                "goals_prevented": 0.9777
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 17,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 9,
                "saves": 2,
                "goals_prevented": -0.1845
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0103,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 15,
                "clearances": 1,
                "ball_recovery": 6,
                "saves": 2,
                "goals_prevented": 0.1349
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0104,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 19,
                "key_pass": 1,
                "clearances": 1,
                "ball_recovery": 4,
                "saves": 3,
                "goals_prevented": -0.1219
              },
              "has_player_stats": true,
              "league_name": "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": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0044,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 15,
                "clearances": 1,
                "ball_recovery": 9,
                "saves": 6,
                "goals_prevented": 0.663
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 13,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 6,
                "saves": 2,
                "goals_prevented": 0.0097
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 15,
                "clearances": 2,
                "ball_recovery": 14,
                "saves": 2,
                "goals_prevented": 0.0882
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2019,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 24,
                "clearances": 1,
                "ball_recovery": 12,
                "saves": 5,
                "goals_prevented": -0.2241
              },
              "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": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 19,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 194,
            "combined_rank_score": 156.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 3.0,
            "fifa_rank": 156.0,
            "fifa_overall": 85.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0451,
            "source_file": "data/player_rankings.csv",
            "player_name": "Antonio Sivera",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Renzo Malanca",
                  "ranking": 189
                },
                {
                  "player_name": "Andy Robertson",
                  "ranking": 190
                },
                {
                  "player_name": "Nicolás de la Cruz",
                  "ranking": 191
                },
                {
                  "player_name": "Osmar Barba",
                  "ranking": 192
                },
                {
                  "player_name": "Yarden Shua",
                  "ranking": 193
                }
              ],
              "lower": [
                {
                  "player_name": "Igor Lichnovsky",
                  "ranking": 195
                },
                {
                  "player_name": "Luis Rojas",
                  "ranking": 196
                },
                {
                  "player_name": "Armandas Kučys",
                  "ranking": 197
                },
                {
                  "player_name": "Javier Hernández",
                  "ranking": 198
                },
                {
                  "player_name": "Daler Tukhsanov",
                  "ranking": 199
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 46,
          "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": 46,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.999,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "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 (G_service) evaluated 46 historical appearances across 3 target models; FBref 2026-2027 prior blended (La Liga, Alavés, rel: 0.20, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 3.0289,
                "goals_prevented": -0.1558,
                "rating": 7.0451,
                "minutes": 90.0,
                "total_pass": 27.4952,
                "accurate_pass": 15.0976,
                "total_long_balls": 21.8897,
                "accurate_long_balls": 9.5875,
                "touches": 39.0773,
                "clearances": 1.6172,
                "ball_recovery": 9.8676,
                "high_claims": 1.3503,
                "punches": 1.046,
                "aerial_won": 0.4854,
                "sweeper_actions": 0.8214,
                "sweeper_accurate": 0.8214,
                "saves_inside_box": 1.7926,
                "possession_lost": 12.6573,
                "duels_won": 0.6041,
                "duels_lost": 0.0404,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0007,
                "fouls_drawn": 0.0068,
                "total_own_half_passes": 7.7403,
                "accurate_own_half_passes": 6.4797
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-18T10:04:16.386956+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 200,
                    "rows": 7041
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 8.6
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0783,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 8.1
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "accurateLongBalls": 9.5875,
                  "save_contribution": 3.3704,
                  "distribution_accuracy": 0.8089,
                  "accurateOwnHalfPasses": 6.4797,
                  "passValueNormalized": 0.1307,
                  "totalOwnHalfPasses": 7.7403
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 3.0288796424865723,
                    "model_output": 3.0289,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "save_contribution",
                        "importance": 0.0393
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.039
                      },
                      {
                        "name": "saves",
                        "importance": 0.0355
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0354
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.941,
                      "items": [
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0398
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.0363
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0339
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0314
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0243
                        }
                      ],
                      "others": 0.0018,
                      "total": 3.0289,
                      "log_link": true,
                      "margin_base": 1.078763,
                      "item_margins": [
                        {
                          "name": "passValueNormalized",
                          "margin": -0.013632
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": 0.012434
                        },
                        {
                          "name": "saves",
                          "margin": 0.01146
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.010498
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.008076
                        }
                      ],
                      "others_margin": 0.000595
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.15576116740703583,
                    "model_output": -0.1558,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.0405
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.0401
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0394
                      },
                      {
                        "name": "totalOwnHalfPasses",
                        "importance": 0.0381
                      },
                      {
                        "name": "punches",
                        "importance": 0.0363
                      }
                    ],
                    "decomposition": {
                      "base": -0.0281,
                      "items": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": -0.0414
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0274
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0273
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": -0.0194
                        },
                        {
                          "name": "inside_box_save_rate",
                          "contribution": -0.0154
                        }
                      ],
                      "others": 0.0032,
                      "total": -0.1558,
                      "log_link": false,
                      "margin_base": -0.028113,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": -0.041448
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.02742
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.027329
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": -0.019432
                        },
                        {
                          "name": "inside_box_save_rate",
                          "margin": -0.015404
                        }
                      ],
                      "others_margin": 0.003384
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.045129299163818,
                    "model_output": 7.0451,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0379
                      },
                      {
                        "name": "commanding_index",
                        "importance": 0.0375
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.037
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0354
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 6.9974,
                      "items": [
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.047
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0263
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "contribution": 0.0244
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0234
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": -0.0221
                        }
                      ],
                      "others": 0.0481,
                      "total": 7.0451,
                      "log_link": false,
                      "margin_base": 6.997403,
                      "item_margins": [
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.047013
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.026325
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "margin": 0.024401
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.023352
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": -0.02212
                        }
                      ],
                      "others_margin": 0.048113
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 46,
                  "role_matches": 46,
                  "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.9990, quality 0.470)",
              "stats": {
                "saves": 3.0259,
                "goals_prevented": -0.1556,
                "rating": 7.0451,
                "minutes": 90.0,
                "total_pass": 27.4677,
                "accurate_pass": 15.0825,
                "total_long_balls": 21.8678,
                "accurate_long_balls": 9.5779,
                "touches": 39.0382,
                "clearances": 1.6156,
                "ball_recovery": 9.8577,
                "high_claims": 1.3489,
                "punches": 1.045,
                "aerial_won": 0.4849,
                "sweeper_actions": 0.8206,
                "sweeper_accurate": 0.8206,
                "saves_inside_box": 1.7908,
                "possession_lost": 12.6446,
                "duels_won": 0.6035,
                "duels_lost": 0.0404,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0007,
                "fouls_drawn": 0.0068,
                "total_own_half_passes": 7.7326,
                "accurate_own_half_passes": 6.4732
              },
              "params": {
                "market_value_eur": 5600000,
                "quality_factor": 0.4695,
                "boost_factor": 0.999,
                "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.0127)",
              "stats": {
                "saves": 3.0298,
                "goals_prevented": -0.1556,
                "rating": 7.0451,
                "minutes": 90.0,
                "total_pass": 27.4677,
                "accurate_pass": 15.0825,
                "total_long_balls": 21.8678,
                "accurate_long_balls": 9.5779,
                "touches": 39.0382,
                "clearances": 1.6156,
                "ball_recovery": 9.8577,
                "high_claims": 1.3489,
                "punches": 1.045,
                "aerial_won": 0.4849,
                "sweeper_actions": 0.8206,
                "sweeper_accurate": 0.8206,
                "saves_inside_box": 1.7908,
                "possession_lost": 12.6446,
                "duels_won": 0.6035,
                "duels_lost": 0.0404,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0007,
                "fouls_drawn": 0.0067,
                "total_own_half_passes": 7.7326,
                "accurate_own_half_passes": 6.4732
              },
              "params": {
                "blend_weight": 0.0127,
                "history_matches": 46,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Alavés"
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 3.0298,
                "goals_prevented": -0.1556,
                "rating": 7.0451,
                "minutes": 90.0,
                "total_pass": 27.4677,
                "accurate_pass": 15.0825,
                "total_long_balls": 21.8678,
                "accurate_long_balls": 9.5779,
                "touches": 39.0382,
                "clearances": 1.6156,
                "ball_recovery": 9.8577,
                "high_claims": 1.3489,
                "punches": 1.045,
                "aerial_won": 0.4849,
                "sweeper_actions": 0.8206,
                "sweeper_accurate": 0.8206,
                "saves_inside_box": 1.7908,
                "possession_lost": 12.6446,
                "duels_won": 0.6035,
                "duels_lost": 0.0404,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0007,
                "fouls_drawn": 0.0067,
                "total_own_half_passes": 7.7326,
                "accurate_own_half_passes": 6.4732
              },
              "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.0298,
                "goals_prevented": -0.1556,
                "rating": 7.0451,
                "minutes": 90.0,
                "total_pass": 27.4677,
                "accurate_pass": 15.0825,
                "total_long_balls": 21.8678,
                "accurate_long_balls": 9.5779,
                "touches": 39.0382,
                "clearances": 1.6156,
                "ball_recovery": 9.8577,
                "high_claims": 1.3489,
                "punches": 1.045,
                "aerial_won": 0.4849,
                "sweeper_actions": 0.8206,
                "sweeper_accurate": 0.8206,
                "saves_inside_box": 1.7908,
                "possession_lost": 12.6446,
                "duels_won": 0.6035,
                "duels_lost": 0.0404,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0007,
                "fouls_drawn": 0.0067,
                "total_own_half_passes": 7.7326,
                "accurate_own_half_passes": 6.4732,
                "gk_engine_opponent_lambda": 0.8347,
                "shots_faced": 7.9,
                "expected_saves": 1.93,
                "high_pressure_saves": 0.67,
                "opponent_faced": "Ferrán Jutglà, Iago Aspas",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ferrán Jutglà, Iago Aspas",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 0.8347
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "saves": 3.0298,
                "goals_prevented": -0.1556,
                "rating": 7.0451,
                "minutes": 90.0,
                "total_pass": 27.4677,
                "accurate_pass": 15.0825,
                "total_long_balls": 21.8678,
                "accurate_long_balls": 9.5779,
                "touches": 39.0382,
                "clearances": 1.6156,
                "ball_recovery": 9.8577,
                "high_claims": 1.3489,
                "punches": 1.045,
                "aerial_won": 0.4849,
                "sweeper_actions": 0.8206,
                "sweeper_accurate": 0.8206,
                "saves_inside_box": 1.7908,
                "possession_lost": 12.6446,
                "duels_won": 0.6035,
                "duels_lost": 0.0404,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0007,
                "fouls_drawn": 0.0067,
                "total_own_half_passes": 7.7326,
                "accurate_own_half_passes": 6.4732,
                "gk_engine_opponent_lambda": 0.8347,
                "shots_faced": 7.9,
                "expected_saves": 1.93,
                "high_pressure_saves": 0.67,
                "opponent_faced": "Ferrán Jutglà, Iago Aspas",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "saves": 3.0298,
                "goals_prevented": -0.1556,
                "rating": 7.0451,
                "minutes": 90.0,
                "total_pass": 27.4677,
                "accurate_pass": 15.0825,
                "total_long_balls": 21.8678,
                "accurate_long_balls": 9.5779,
                "touches": 39.0382,
                "clearances": 1.6156,
                "ball_recovery": 9.8577,
                "high_claims": 1.3489,
                "punches": 1.045,
                "aerial_won": 0.4849,
                "sweeper_actions": 0.8206,
                "sweeper_accurate": 0.8206,
                "saves_inside_box": 1.7908,
                "possession_lost": 12.6446,
                "duels_won": 0.6035,
                "duels_lost": 0.0404,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0007,
                "fouls_drawn": 0.0067,
                "total_own_half_passes": 7.7326,
                "accurate_own_half_passes": 6.4732,
                "gk_engine_opponent_lambda": 0.8347,
                "shots_faced": 8.2,
                "expected_saves": 2.01,
                "high_pressure_saves": 0.69,
                "opponent_faced": "Ferrán Jutglà, Iago Aspas",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 7.9,
                  "after": 8.2
                },
                {
                  "stat": "expected_saves",
                  "before": 1.93,
                  "after": 2.01
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 0.67,
                  "after": 0.69
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 85.0)",
              "stats": {
                "saves": 3.0298,
                "goals_prevented": -0.1556,
                "rating": 7.0451,
                "minutes": 90.0,
                "total_pass": 27.4677,
                "accurate_pass": 15.0825,
                "total_long_balls": 21.8678,
                "accurate_long_balls": 9.5779,
                "touches": 39.0382,
                "clearances": 1.6156,
                "ball_recovery": 9.8577,
                "high_claims": 1.3489,
                "punches": 1.045,
                "aerial_won": 0.4849,
                "sweeper_actions": 0.8206,
                "sweeper_accurate": 0.8206,
                "saves_inside_box": 1.7908,
                "possession_lost": 12.6446,
                "duels_won": 0.6035,
                "duels_lost": 0.0404,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0007,
                "fouls_drawn": 0.0067,
                "total_own_half_passes": 7.7326,
                "accurate_own_half_passes": 6.4732,
                "gk_engine_opponent_lambda": 0.8347,
                "shots_faced": 8.2,
                "expected_saves": 2.01,
                "high_pressure_saves": 0.69,
                "opponent_faced": "Ferrán Jutglà, Iago Aspas",
                "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": 85.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": 194,
                "fifa_rank": 156.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 85.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "saves": 3.0298,
                "goals_prevented": -0.1556,
                "rating": 7.0451,
                "minutes": 90.0,
                "total_pass": 27.4677,
                "accurate_pass": 15.0825,
                "total_long_balls": 21.8678,
                "accurate_long_balls": 9.5779,
                "touches": 39.0382,
                "clearances": 1.6156,
                "ball_recovery": 9.8577,
                "high_claims": 1.3489,
                "punches": 1.045,
                "aerial_won": 0.4849,
                "sweeper_actions": 0.8206,
                "sweeper_accurate": 0.8206,
                "saves_inside_box": 1.7908,
                "possession_lost": 12.6446,
                "duels_won": 0.6035,
                "duels_lost": 0.0404,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0007,
                "fouls_drawn": 0.0067,
                "total_own_half_passes": 7.7326,
                "accurate_own_half_passes": 6.4732,
                "gk_engine_opponent_lambda": 0.8347,
                "shots_faced": 8.2,
                "expected_saves": 2.01,
                "high_pressure_saves": 0.69,
                "opponent_faced": "Ferrán Jutglà, Iago Aspas",
                "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": 85.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "saves": 3.0298,
                "goals_prevented": -0.1556,
                "rating": 7.0451,
                "minutes": 90.0,
                "total_pass": 27.4677,
                "accurate_pass": 15.0825,
                "total_long_balls": 21.8678,
                "accurate_long_balls": 9.5779,
                "touches": 39.0382,
                "clearances": 1.6156,
                "ball_recovery": 9.8577,
                "high_claims": 1.3489,
                "punches": 1.045,
                "aerial_won": 0.4849,
                "sweeper_actions": 0.8206,
                "sweeper_accurate": 0.8206,
                "saves_inside_box": 1.7908,
                "possession_lost": 12.6446,
                "duels_won": 0.6035,
                "duels_lost": 0.0404,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0007,
                "fouls_drawn": 0.0067,
                "total_own_half_passes": 7.7326,
                "accurate_own_half_passes": 6.4732,
                "gk_engine_opponent_lambda": 0.8347,
                "shots_faced": 8.2,
                "expected_saves": 2.01,
                "high_pressure_saves": 0.69,
                "opponent_faced": "Ferrán Jutglà, Iago Aspas",
                "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": 85.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 0.5324,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0
              }
            }
          ]
        },
        "Nicolás Valentini": {
          "player_id": 1116570,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 184,
          "market_value": 3100000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7169,
            "minutes": 86,
            "total_pass": 35,
            "accurate_pass": 27,
            "duels_won": 3,
            "total_long_balls": 7,
            "accurate_long_balls": 3,
            "total_own_half_passes": 22,
            "accurate_own_half_passes": 20,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 7,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 47,
            "possession_lost": 9.8673,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0233,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 13,
            "total_progression": 37,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Ferrán Jutglà",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.023,
            "finishing_factor": 1.0,
            "creation_factor": 0.8,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 71,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 32,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "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": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 18,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 7,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0745,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 31,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 14,
                "interceptions": 1,
                "clearances": 2,
                "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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 10,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0244,
                "expected_assists": 0.0002,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 5,
                "accurate_pass": 5,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 4138,
            "combined_rank_score": 2135.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 1.0,
            "fifa_rank": 3449.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7169,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nicolás Valentini",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yunus Musah",
                  "ranking": 4133
                },
                {
                  "player_name": "Florent Muslija",
                  "ranking": 4134
                },
                {
                  "player_name": "Darnell Furlong",
                  "ranking": 4135
                },
                {
                  "player_name": "Lucas Noubi",
                  "ranking": 4136
                },
                {
                  "player_name": "Marcão",
                  "ranking": 4137
                }
              ],
              "lower": [
                {
                  "player_name": "Borna Sosa",
                  "ranking": 4139
                },
                {
                  "player_name": "Nathan Broadhead",
                  "ranking": 4140
                },
                {
                  "player_name": "Fábio Cardoso",
                  "ranking": 4141
                },
                {
                  "player_name": "Jorge Sánchez",
                  "ranking": 4142
                },
                {
                  "player_name": "Christos Mouzakitis",
                  "ranking": 4143
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.564,
          "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.564,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9901,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "minutes": 11.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 8.18,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.0067
            },
            "rationale": "XGBoost regressor (D_service) evaluated 5 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Alavés, rel: 0.01, 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.8357,
                "tackles": 1.3021,
                "tackles_won": 0.8075,
                "clearances": 4.2973,
                "aerial_won": 1.2018,
                "total_shots": 0.3813,
                "rating": 6.7169,
                "minutes": 85.57,
                "total_pass": 35.1088,
                "accurate_pass": 27.0933,
                "duels_won": 3.0,
                "total_long_balls": 6.7259,
                "accurate_long_balls": 2.8338,
                "total_own_half_passes": 22.6803,
                "accurate_own_half_passes": 20.1769,
                "total_opp_half_passes": 12.4286,
                "accurate_opp_half_passes": 6.9164,
                "crosses_total": 0.5617,
                "crosses_accurate": 0.2808,
                "touches": 47.7852,
                "possession_lost": 9.966,
                "dispossessed": 0.0,
                "duels_lost": 2.0583,
                "aerial_lost": 0.6696,
                "total_contest": 0.3887,
                "won_contest": 0.0,
                "ball_recovery": 1.0496,
                "challenges_lost": 0.6113,
                "fouls": 0.3887,
                "fouls_drawn": 0.6113,
                "blocks": 0.9504,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0224,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 13.242,
                "total_progression": 37.079,
                "progressive_carries": 0.2809,
                "key_pass": 0.2809,
                "shots_off_target": 0.3813
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.1656,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.4489,
                  "aerialWon": 0.7708,
                  "totalClearance_p90": 3.9244,
                  "totalTackle": 1.1925,
                  "defensive_actions": 1.8569
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8357363939285278,
                    "model_output": 0.8357,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.112
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0615
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0372
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0264
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0158
                        }
                      ],
                      "others": 0.0037,
                      "total": 0.8357,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122313
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.065261
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.041647
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.030625
                        },
                        {
                          "name": "touches",
                          "margin": -0.018817
                        }
                      ],
                      "others_margin": 0.004402
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.3021236658096313,
                    "model_output": 1.3021,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1781
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0568
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0477
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0331
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.032
                        }
                      ],
                      "others": -0.0979,
                      "total": 1.3021,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.120422
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.036851
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.032045
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.022826
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.02263
                        }
                      ],
                      "others_margin": -0.072459
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8075147271156311,
                    "model_output": 0.8075,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1111
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0461
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0316
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0221
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0159
                        }
                      ],
                      "others": -0.0421,
                      "total": 0.8075,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122302
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.04896
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.034957
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.025205
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.018485
                        }
                      ],
                      "others_margin": -0.050859
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.297308921813965,
                    "model_output": 4.2973,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4496
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3625
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.3509
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2108
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1222
                        }
                      ],
                      "others": -0.2098,
                      "total": 4.2973,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.123081
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.089263
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.079423
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.046957
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.027479
                        }
                      ],
                      "others_margin": -0.047657
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.2018249034881592,
                    "model_output": 1.2018,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.305
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.148
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0984
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0816
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0538
                        }
                      ],
                      "others": -0.0891,
                      "total": 1.2018,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.250273
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.129322
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.077544
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.063868
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.042581
                        }
                      ],
                      "others_margin": -0.071599
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3813317120075226,
                    "model_output": 0.3813,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1213
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0493
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0233
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0225
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0085
                        }
                      ],
                      "others": -0.0585,
                      "total": 0.3813,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.121331
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.049336
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.02328
                        },
                        {
                          "name": "rating",
                          "margin": 0.022475
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.008498
                        }
                      ],
                      "others_margin": -0.058431
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7168869972229,
                    "model_output": 6.7169,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "accuratePass",
                          "contribution": -0.0218
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0146
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0145
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0138
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0118
                        }
                      ],
                      "others": -0.0203,
                      "total": 6.7169,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "accuratePass",
                          "margin": -0.021802
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.014628
                        },
                        {
                          "name": "rating",
                          "margin": 0.014494
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013803
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.01181
                        }
                      ],
                      "others_margin": -0.020267
                    }
                  }
                ],
                "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.9901, quality 0.439)",
              "stats": {
                "interceptions": 0.8275,
                "tackles": 1.2892,
                "tackles_won": 0.7995,
                "clearances": 4.2548,
                "aerial_won": 1.1899,
                "total_shots": 0.3776,
                "rating": 6.7169,
                "minutes": 85.57,
                "total_pass": 34.7612,
                "accurate_pass": 26.8251,
                "duels_won": 2.9703,
                "total_long_balls": 6.6593,
                "accurate_long_balls": 2.8057,
                "total_own_half_passes": 22.4558,
                "accurate_own_half_passes": 19.9771,
                "total_opp_half_passes": 12.3056,
                "accurate_opp_half_passes": 6.8479,
                "crosses_total": 0.5561,
                "crosses_accurate": 0.278,
                "touches": 47.3121,
                "possession_lost": 9.8673,
                "dispossessed": 0.0,
                "duels_lost": 2.0379,
                "aerial_lost": 0.663,
                "total_contest": 0.3849,
                "won_contest": 0.0,
                "ball_recovery": 1.0392,
                "challenges_lost": 0.6052,
                "fouls": 0.3849,
                "fouls_drawn": 0.6052,
                "blocks": 0.941,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0222,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 13.1109,
                "total_progression": 36.7119,
                "progressive_carries": 0.2781,
                "key_pass": 0.2781,
                "shots_off_target": 0.3775
              },
              "params": {
                "market_value_eur": 3100000,
                "quality_factor": 0.4387,
                "boost_factor": 0.9901,
                "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.0022)",
              "stats": {
                "interceptions": 0.8257,
                "tackles": 1.2892,
                "tackles_won": 0.7978,
                "clearances": 4.2548,
                "aerial_won": 1.1899,
                "total_shots": 0.3937,
                "rating": 6.7169,
                "minutes": 85.57,
                "total_pass": 34.7612,
                "accurate_pass": 26.8251,
                "duels_won": 2.9703,
                "total_long_balls": 6.6593,
                "accurate_long_balls": 2.8057,
                "total_own_half_passes": 22.4558,
                "accurate_own_half_passes": 19.9771,
                "total_opp_half_passes": 12.3056,
                "accurate_opp_half_passes": 6.8479,
                "crosses_total": 0.5549,
                "crosses_accurate": 0.278,
                "touches": 47.3121,
                "possession_lost": 9.8673,
                "dispossessed": 0.0,
                "duels_lost": 2.0379,
                "aerial_lost": 0.663,
                "total_contest": 0.3849,
                "won_contest": 0.0,
                "ball_recovery": 1.0392,
                "challenges_lost": 0.6052,
                "fouls": 0.4048,
                "fouls_drawn": 0.6039,
                "blocks": 0.941,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0222,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 13.1109,
                "total_progression": 36.7119,
                "progressive_carries": 0.2781,
                "key_pass": 0.2781,
                "shots_off_target": 0.3775
              },
              "params": {
                "blend_weight": 0.0022,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9508,
                "prior_reliability": 0.0067,
                "competition": "La Liga",
                "squad": "Alavés"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.3849,
                  "after": 0.4048
                },
                {
                  "stat": "totalShots",
                  "before": 0.3776,
                  "after": 0.3937
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.8257,
                "tackles": 1.2892,
                "tackles_won": 0.7978,
                "clearances": 4.2548,
                "aerial_won": 1.1899,
                "total_shots": 0.3937,
                "rating": 6.7169,
                "minutes": 85.57,
                "total_pass": 34.7612,
                "accurate_pass": 26.8251,
                "duels_won": 2.9703,
                "total_long_balls": 6.6593,
                "accurate_long_balls": 2.8057,
                "total_own_half_passes": 22.4558,
                "accurate_own_half_passes": 19.9771,
                "total_opp_half_passes": 12.3056,
                "accurate_opp_half_passes": 6.8479,
                "crosses_total": 0.5549,
                "crosses_accurate": 0.278,
                "touches": 47.3121,
                "possession_lost": 9.8673,
                "dispossessed": 0.0,
                "duels_lost": 2.0379,
                "aerial_lost": 0.663,
                "total_contest": 0.3849,
                "won_contest": 0.0,
                "ball_recovery": 1.0392,
                "challenges_lost": 0.6052,
                "fouls": 0.4048,
                "fouls_drawn": 0.6039,
                "blocks": 0.941,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0222,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 13.1109,
                "total_progression": 36.7119,
                "progressive_carries": 0.2781,
                "key_pass": 0.2781,
                "shots_off_target": 0.3775
              },
              "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.8257,
                "tackles": 1.2892,
                "tackles_won": 0.7978,
                "clearances": 4.2548,
                "aerial_won": 1.1899,
                "total_shots": 0.3937,
                "rating": 6.7169,
                "minutes": 85.57,
                "total_pass": 34.7612,
                "accurate_pass": 26.8251,
                "duels_won": 2.9703,
                "total_long_balls": 6.6593,
                "accurate_long_balls": 2.8057,
                "total_own_half_passes": 22.4558,
                "accurate_own_half_passes": 19.9771,
                "total_opp_half_passes": 12.3056,
                "accurate_opp_half_passes": 6.8479,
                "crosses_total": 0.5549,
                "crosses_accurate": 0.278,
                "touches": 47.3121,
                "possession_lost": 9.8673,
                "dispossessed": 0.0,
                "duels_lost": 2.0379,
                "aerial_lost": 0.663,
                "total_contest": 0.3849,
                "won_contest": 0.0,
                "ball_recovery": 1.0392,
                "challenges_lost": 0.6052,
                "fouls": 0.4048,
                "fouls_drawn": 0.6039,
                "blocks": 0.941,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0222,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 13.1109,
                "total_progression": 36.7119,
                "progressive_carries": 0.2781,
                "key_pass": 0.2781,
                "shots_off_target": 0.3775,
                "opponent_faced": "Ferrán Jutglà",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ferrán Jutglà",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.8257,
                "tackles": 1.2892,
                "tackles_won": 0.7978,
                "clearances": 4.2548,
                "aerial_won": 1.1899,
                "total_shots": 0.3937,
                "rating": 6.7169,
                "minutes": 85.57,
                "total_pass": 34.7612,
                "accurate_pass": 26.8251,
                "duels_won": 2.9703,
                "total_long_balls": 6.6593,
                "accurate_long_balls": 2.8057,
                "total_own_half_passes": 22.4558,
                "accurate_own_half_passes": 19.9771,
                "total_opp_half_passes": 12.3056,
                "accurate_opp_half_passes": 6.8479,
                "crosses_total": 0.5549,
                "crosses_accurate": 0.278,
                "touches": 47.3121,
                "possession_lost": 9.8673,
                "dispossessed": 0.0,
                "duels_lost": 2.0379,
                "aerial_lost": 0.663,
                "total_contest": 0.3849,
                "won_contest": 0.0,
                "ball_recovery": 1.0392,
                "challenges_lost": 0.6052,
                "fouls": 0.4048,
                "fouls_drawn": 0.6039,
                "blocks": 0.941,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0222,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 13.1109,
                "total_progression": 36.7119,
                "progressive_carries": 0.2781,
                "key_pass": 0.2781,
                "shots_off_target": 0.3775,
                "opponent_faced": "Ferrán Jutglà",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.8257,
                "tackles": 1.2892,
                "tackles_won": 0.7978,
                "clearances": 4.2548,
                "aerial_won": 1.1899,
                "total_shots": 0.3937,
                "rating": 6.7169,
                "minutes": 85.57,
                "total_pass": 34.7612,
                "accurate_pass": 26.8251,
                "duels_won": 2.9703,
                "total_long_balls": 6.6593,
                "accurate_long_balls": 2.8057,
                "total_own_half_passes": 22.4558,
                "accurate_own_half_passes": 19.9771,
                "total_opp_half_passes": 12.3056,
                "accurate_opp_half_passes": 6.8479,
                "crosses_total": 0.5549,
                "crosses_accurate": 0.278,
                "touches": 47.3121,
                "possession_lost": 9.8673,
                "dispossessed": 0.0,
                "duels_lost": 2.0379,
                "aerial_lost": 0.663,
                "total_contest": 0.3849,
                "won_contest": 0.0,
                "ball_recovery": 1.0392,
                "challenges_lost": 0.6052,
                "fouls": 0.4048,
                "fouls_drawn": 0.6039,
                "blocks": 0.941,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0233,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 13.1109,
                "total_progression": 36.7119,
                "progressive_carries": 0.2781,
                "key_pass": 0.2781,
                "shots_off_target": 0.3775,
                "opponent_faced": "Ferrán Jutglà",
                "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.0,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 73.0)",
              "stats": {
                "interceptions": 0.8257,
                "tackles": 1.2892,
                "tackles_won": 0.7978,
                "clearances": 4.2548,
                "aerial_won": 1.1899,
                "total_shots": 0.3937,
                "rating": 6.7169,
                "minutes": 85.57,
                "total_pass": 34.7612,
                "accurate_pass": 26.8251,
                "duels_won": 2.9703,
                "total_long_balls": 6.6593,
                "accurate_long_balls": 2.8057,
                "total_own_half_passes": 22.4558,
                "accurate_own_half_passes": 19.9771,
                "total_opp_half_passes": 12.3056,
                "accurate_opp_half_passes": 6.8479,
                "crosses_total": 0.5549,
                "crosses_accurate": 0.278,
                "touches": 47.3121,
                "possession_lost": 9.8673,
                "dispossessed": 0.0,
                "duels_lost": 2.0379,
                "aerial_lost": 0.663,
                "total_contest": 0.3849,
                "won_contest": 0.0,
                "ball_recovery": 1.0392,
                "challenges_lost": 0.6052,
                "fouls": 0.4048,
                "fouls_drawn": 0.6039,
                "blocks": 0.941,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0233,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 13.1109,
                "total_progression": 36.7119,
                "progressive_carries": 0.2781,
                "key_pass": 0.2781,
                "shots_off_target": 0.3775,
                "opponent_faced": "Ferrán Jutglà",
                "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.0,
                "creation_factor": 0.8,
                "fifa_overall": 73.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": 4138,
                "fifa_rank": 3449.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.8257,
                "tackles": 1.2892,
                "tackles_won": 0.7978,
                "clearances": 4.2548,
                "aerial_won": 1.1899,
                "total_shots": 0.3937,
                "rating": 6.7169,
                "minutes": 85.57,
                "total_pass": 34.7612,
                "accurate_pass": 26.8251,
                "duels_won": 2.9703,
                "total_long_balls": 6.6593,
                "accurate_long_balls": 2.8057,
                "total_own_half_passes": 22.4558,
                "accurate_own_half_passes": 19.9771,
                "total_opp_half_passes": 12.3056,
                "accurate_opp_half_passes": 6.8479,
                "crosses_total": 0.5549,
                "crosses_accurate": 0.278,
                "touches": 47.3121,
                "possession_lost": 9.8673,
                "dispossessed": 0.0,
                "duels_lost": 2.0379,
                "aerial_lost": 0.663,
                "total_contest": 0.3849,
                "won_contest": 0.0,
                "ball_recovery": 1.0392,
                "challenges_lost": 0.6052,
                "fouls": 0.4048,
                "fouls_drawn": 0.6039,
                "blocks": 0.941,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0233,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 13.1109,
                "total_progression": 36.7119,
                "progressive_carries": 0.2781,
                "key_pass": 0.2781,
                "shots_off_target": 0.3775,
                "opponent_faced": "Ferrán Jutglà",
                "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.0,
                "creation_factor": 0.8,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "goal_rate": 0.0,
                "scorer_weight": 0.001,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0011,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.8257,
                "tackles": 1.2892,
                "tackles_won": 0.7978,
                "clearances": 4.2548,
                "aerial_won": 1.1899,
                "total_shots": 0.3937,
                "rating": 6.7169,
                "minutes": 85.57,
                "total_pass": 34.7612,
                "accurate_pass": 26.8251,
                "duels_won": 2.9703,
                "total_long_balls": 6.6593,
                "accurate_long_balls": 2.8057,
                "total_own_half_passes": 22.4558,
                "accurate_own_half_passes": 19.9771,
                "total_opp_half_passes": 12.3056,
                "accurate_opp_half_passes": 6.8479,
                "crosses_total": 0.5549,
                "crosses_accurate": 0.278,
                "touches": 47.3121,
                "possession_lost": 9.8673,
                "dispossessed": 0.0,
                "duels_lost": 2.0379,
                "aerial_lost": 0.663,
                "total_contest": 0.3849,
                "won_contest": 0.0,
                "ball_recovery": 1.0392,
                "challenges_lost": 0.6052,
                "fouls": 0.4048,
                "fouls_drawn": 0.6039,
                "blocks": 0.941,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0233,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 13.1109,
                "total_progression": 36.7119,
                "progressive_carries": 0.2781,
                "key_pass": 0.2781,
                "shots_off_target": 0.3775,
                "opponent_faced": "Ferrán Jutglà",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.023,
                "finishing_factor": 1.0,
                "creation_factor": 0.8,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.023,
                "assist_rate": 0.0,
                "provider_weight": 0.0186,
                "squad_weight_total": 0.5324,
                "weight_share": 0.035,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 12
              }
            }
          ]
        },
        "Abderrahman Rebbach": {
          "player_id": 1082968,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 21,
          "height": 176,
          "market_value": 2400000,
          "stats": {
            "expected_goals": 0.0547,
            "goal_rate": 0.085,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0497,
            "key_pass": 1,
            "rating": 6.7645,
            "minutes": 80,
            "total_pass": 22,
            "accurate_pass": 18,
            "duels_won": 5,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 8,
            "crosses_total": 3,
            "crosses_accurate": 0,
            "touches": 45,
            "possession_lost": 11.6889,
            "dispossessed": 0.3516,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "assist_rate": 0.0758,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0296,
            "offsides": 0,
            "ball_carries": 12,
            "total_progression": 72,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9174,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 1,
            "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": "Yoel Lago, Sebastián Cáceres",
            "opponent_faced": "Yoel Lago, Sebastián Cáceres",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0532,
            "projected_assists": 0,
            "assist_probability": 0.0485,
            "finishing_factor": 1.0843,
            "creation_factor": 1.25,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0164,
                "expected_assists": 0.0036,
                "total_shots": 1,
                "total_pass": 18,
                "accurate_pass": 16,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 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": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 65,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 85,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0607,
                "expected_assists": 0.0566,
                "total_shots": 1,
                "total_pass": 27,
                "accurate_pass": 22,
                "interceptions": 1,
                "clearances": 2,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0643,
                "expected_assists": 0.0109,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 23,
                "accurate_pass": 22,
                "tackles": 5,
                "tackles_won": 3,
                "clearances": 1,
                "aerial_won": 1,
                "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"
            },
            {
              "match_id": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 71,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0098,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 15,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 4,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 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": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 71,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0062,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 17,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0189,
                "expected_assists": 0.0275,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 27,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 89,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.017,
                "expected_assists": 0.0004,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 16,
                "accurate_pass": 8,
                "tackles": 5,
                "tackles_won": 1,
                "interceptions": 2,
                "aerial_won": 2,
                "duels_won": 8,
                "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": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.039,
                "expected_assists": 0.1277,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 34,
                "accurate_pass": 31,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "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"
            },
            {
              "match_id": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 45,
                "rating": 7.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.57,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 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": 1659,
            "combined_rank_score": 944.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 673.0,
            "sofascore_rating": 6.7241,
            "sofascore_appearances": 30.0,
            "fifa_rank": 1216.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7645,
            "source_file": "data/player_rankings.csv",
            "player_name": "Abderrahman Rebbach",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Khumoyun Sherbutaev",
                  "ranking": 1654
                },
                {
                  "player_name": "Kuvonchbek Khushvaktov",
                  "ranking": 1655
                },
                {
                  "player_name": "Florian Grillitsch",
                  "ranking": 1656
                },
                {
                  "player_name": "Zakaria Labyad",
                  "ranking": 1657
                },
                {
                  "player_name": "Rodrigo Odriozola",
                  "ranking": 1658
                }
              ],
              "lower": [
                {
                  "player_name": "Petar Sučić",
                  "ranking": 1660
                },
                {
                  "player_name": "Giacomo Raspadori",
                  "ranking": 1661
                },
                {
                  "player_name": "Wataru Endo",
                  "ranking": 1662
                },
                {
                  "player_name": "Barış Alper Yılmaz",
                  "ranking": 1663
                },
                {
                  "player_name": "Carlos Soler",
                  "ranking": 1664
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 38,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 38,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9976,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 38 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.0814,
                "goals": 0.0929,
                "goal_rate": 0.0929,
                "shots_on_target": 0.3095,
                "total_shots": 0.9917,
                "expected_assists": 0.0475,
                "key_pass": 0.6411,
                "rating": 6.7645,
                "minutes": 80.09,
                "total_pass": 22.4214,
                "accurate_pass": 18.1459,
                "duels_won": 4.7362,
                "total_long_balls": 2.255,
                "accurate_long_balls": 1.1319,
                "total_opp_half_passes": 11.6898,
                "accurate_opp_half_passes": 8.4034,
                "crosses_total": 3.2603,
                "crosses_accurate": 0.4618,
                "touches": 45.2968,
                "possession_lost": 11.717,
                "dispossessed": 0.3524,
                "duels_lost": 4.6084,
                "aerial_lost": 0.7395,
                "total_contest": 2.1283,
                "won_contest": 1.0084,
                "ball_recovery": 3.4707,
                "challenges_lost": 0.9585,
                "fouls": 1.5845,
                "fouls_drawn": 1.0793,
                "assists": 0.076,
                "assist_rate": 0.076,
                "interceptions": 1.0961,
                "tackles_won": 1.2226,
                "tackles": 2.0263,
                "clearances": 1.207,
                "blocks": 0.1306,
                "big_chances_created": 0.1258,
                "big_chances_missed": 0.0053,
                "xgot": 0.044,
                "offsides": 0.0798,
                "ball_carries": 11.8641,
                "total_progression": 72.1881,
                "progressive_carries": 1.8336,
                "shots_off_target": 0.6822
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 11.1497,
                  "expectedGoals": 0.0331,
                  "accurateOppositionHalfPasses": 8.0257,
                  "accuratePass": 17.4985,
                  "totalShots": 0.7822
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08141448348760605,
                    "model_output": 0.0814,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0482
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0393
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0265
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0153
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.012
                        }
                      ],
                      "others": -0.0534,
                      "total": 0.0814,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.279797
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.233439
                        },
                        {
                          "name": "goals",
                          "margin": -0.151696
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.098859
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.085396
                        }
                      ],
                      "others_margin": -0.503977
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.09293845295906067,
                    "model_output": 0.0929,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0468
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0403
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0318
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0175
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.042,
                      "total": 0.0929,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.261561
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.228894
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.175966
                        },
                        {
                          "name": "goals",
                          "margin": -0.112188
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.090011
                        }
                      ],
                      "others_margin": -0.372197
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.30950963497161865,
                    "model_output": 0.3095,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1479
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.087
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0729
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0472
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0412
                        }
                      ],
                      "others": -0.1277,
                      "total": 0.3095,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.242976
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.135785
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.129886
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.0941
                        },
                        {
                          "name": "goals",
                          "margin": -0.090081
                        }
                      ],
                      "others_margin": -0.345341
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9916946887969971,
                    "model_output": 0.9917,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3704
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2177
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0721
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0558
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0541
                        }
                      ],
                      "others": -0.3528,
                      "total": 0.9917,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.370382
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.217671
                        },
                        {
                          "name": "goals",
                          "margin": -0.072107
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.055836
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.054065
                        }
                      ],
                      "others_margin": -0.352849
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04749026894569397,
                    "model_output": 0.0475,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0095
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0083
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0055
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.002
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0016
                        }
                      ],
                      "others": -0.0064,
                      "total": 0.0475,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.159952
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.14151
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.090441
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.03511
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.028877
                        }
                      ],
                      "others_margin": -0.12885
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.6411363482475281,
                    "model_output": 0.6411,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.172
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0524
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0459
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.038
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0187
                        }
                      ],
                      "others": -0.0493,
                      "total": 0.6411,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.227499
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.063987
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.05969
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.052187
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.026727
                        }
                      ],
                      "others_margin": -0.07396
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.764494895935059,
                    "model_output": 6.7645,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0474
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0211
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0144
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0139
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0115
                        }
                      ],
                      "others": -0.0178,
                      "total": 6.7645,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.047382
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.021105
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.014417
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.013899
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.011523
                        }
                      ],
                      "others_margin": -0.01778
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 38,
                  "role_matches": 23,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9976, quality 0.437)",
              "stats": {
                "expected_goals": 0.0812,
                "goals": 0.0927,
                "goal_rate": 0.0927,
                "shots_on_target": 0.3088,
                "total_shots": 0.9894,
                "expected_assists": 0.0474,
                "key_pass": 0.6396,
                "rating": 6.7645,
                "minutes": 80.09,
                "total_pass": 22.3676,
                "accurate_pass": 18.1023,
                "duels_won": 4.7248,
                "total_long_balls": 2.2496,
                "accurate_long_balls": 1.1292,
                "total_opp_half_passes": 11.6617,
                "accurate_opp_half_passes": 8.3832,
                "crosses_total": 3.2525,
                "crosses_accurate": 0.4607,
                "touches": 45.1881,
                "possession_lost": 11.6889,
                "dispossessed": 0.3516,
                "duels_lost": 4.5973,
                "aerial_lost": 0.7377,
                "total_contest": 2.1232,
                "won_contest": 1.006,
                "ball_recovery": 3.4624,
                "challenges_lost": 0.9562,
                "fouls": 1.5807,
                "fouls_drawn": 1.0767,
                "assists": 0.0758,
                "assist_rate": 0.0758,
                "interceptions": 1.0935,
                "tackles_won": 1.2197,
                "tackles": 2.0214,
                "clearances": 1.2041,
                "blocks": 0.1303,
                "big_chances_created": 0.1255,
                "big_chances_missed": 0.0053,
                "xgot": 0.0439,
                "offsides": 0.0796,
                "ball_carries": 11.8356,
                "total_progression": 72.0148,
                "progressive_carries": 1.8292,
                "shots_off_target": 0.6806
              },
              "params": {
                "market_value_eur": 2400000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9976,
                "reference_quality": 0.505,
                "history_matches": 38,
                "history_shrink": 0.1163,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0812,
                "goals": 0.0927,
                "goal_rate": 0.0927,
                "shots_on_target": 0.3088,
                "total_shots": 0.9894,
                "expected_assists": 0.0474,
                "key_pass": 0.6396,
                "rating": 6.7645,
                "minutes": 80.09,
                "total_pass": 22.3676,
                "accurate_pass": 18.1023,
                "duels_won": 4.7248,
                "total_long_balls": 2.2496,
                "accurate_long_balls": 1.1292,
                "total_opp_half_passes": 11.6617,
                "accurate_opp_half_passes": 8.3832,
                "crosses_total": 3.2525,
                "crosses_accurate": 0.4607,
                "touches": 45.1881,
                "possession_lost": 11.6889,
                "dispossessed": 0.3516,
                "duels_lost": 4.5973,
                "aerial_lost": 0.7377,
                "total_contest": 2.1232,
                "won_contest": 1.006,
                "ball_recovery": 3.4624,
                "challenges_lost": 0.9562,
                "fouls": 1.5807,
                "fouls_drawn": 1.0767,
                "assists": 0.0758,
                "assist_rate": 0.0758,
                "interceptions": 1.0935,
                "tackles_won": 1.2197,
                "tackles": 2.0214,
                "clearances": 1.2041,
                "blocks": 0.1303,
                "big_chances_created": 0.1255,
                "big_chances_missed": 0.0053,
                "xgot": 0.0439,
                "offsides": 0.0796,
                "ball_carries": 11.8356,
                "total_progression": 72.0148,
                "progressive_carries": 1.8292,
                "shots_off_target": 0.6806
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "expected_goals": 0.0745,
                "goals": 0.085,
                "goal_rate": 0.085,
                "shots_on_target": 0.2833,
                "total_shots": 0.9077,
                "expected_assists": 0.0474,
                "key_pass": 0.6396,
                "rating": 6.7645,
                "minutes": 80.09,
                "total_pass": 22.3676,
                "accurate_pass": 18.1023,
                "duels_won": 4.7248,
                "total_long_balls": 2.2496,
                "accurate_long_balls": 1.1292,
                "total_opp_half_passes": 11.6617,
                "accurate_opp_half_passes": 8.3832,
                "crosses_total": 3.2525,
                "crosses_accurate": 0.4607,
                "touches": 45.1881,
                "possession_lost": 11.6889,
                "dispossessed": 0.3516,
                "duels_lost": 4.5973,
                "aerial_lost": 0.7377,
                "total_contest": 2.1232,
                "won_contest": 1.006,
                "ball_recovery": 3.4624,
                "challenges_lost": 0.9562,
                "fouls": 1.5807,
                "fouls_drawn": 1.0767,
                "assists": 0.0758,
                "assist_rate": 0.0758,
                "interceptions": 1.0935,
                "tackles_won": 1.2197,
                "tackles": 2.0214,
                "clearances": 1.2041,
                "blocks": 0.1303,
                "big_chances_created": 0.1255,
                "big_chances_missed": 0.0049,
                "xgot": 0.0403,
                "offsides": 0.0796,
                "ball_carries": 11.8356,
                "total_progression": 72.0148,
                "progressive_carries": 1.8292,
                "shots_off_target": 0.6244,
                "duel_xg_multiplier": 0.9174,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                  "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.9174,
                  "skill_edge": -0.0242,
                  "height_edge": -0.032,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.4913,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Yoel Lago",
                      "market_value": 7000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5146
                    },
                    {
                      "player": "Sebastián Cáceres",
                      "market_value": 4099999,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4679
                    }
                  ],
                  "xg_override": 0.0745
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.9894,
                  "after": 0.9077
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.6806,
                  "after": 0.6244
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3088,
                  "after": 0.2833
                },
                {
                  "stat": "goals",
                  "before": 0.0927,
                  "after": 0.085
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0812,
                  "after": 0.0745
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0745,
                "goal_rate": 0.085,
                "goals": 0,
                "shots_on_target": 0.2833,
                "total_shots": 0.9077,
                "expected_assists": 0.0474,
                "key_pass": 0.6396,
                "rating": 6.7645,
                "minutes": 80.09,
                "total_pass": 22.3676,
                "accurate_pass": 18.1023,
                "duels_won": 4.7248,
                "total_long_balls": 2.2496,
                "accurate_long_balls": 1.1292,
                "total_opp_half_passes": 11.6617,
                "accurate_opp_half_passes": 8.3832,
                "crosses_total": 3.2525,
                "crosses_accurate": 0.4607,
                "touches": 45.1881,
                "possession_lost": 11.6889,
                "dispossessed": 0.3516,
                "duels_lost": 4.5973,
                "aerial_lost": 0.7377,
                "total_contest": 2.1232,
                "won_contest": 1.006,
                "ball_recovery": 3.4624,
                "challenges_lost": 0.9562,
                "fouls": 1.5807,
                "fouls_drawn": 1.0767,
                "assist_rate": 0.0758,
                "assists": 0,
                "interceptions": 1.0935,
                "tackles_won": 1.2197,
                "tackles": 2.0214,
                "clearances": 1.2041,
                "blocks": 0.1303,
                "big_chances_created": 0.1255,
                "big_chances_missed": 0.0049,
                "xgot": 0.0403,
                "offsides": 0.0796,
                "ball_carries": 11.8356,
                "total_progression": 72.0148,
                "progressive_carries": 1.8292,
                "shots_off_target": 0.6244,
                "duel_xg_multiplier": 0.9174,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0547,
                "goal_rate": 0.085,
                "goals": 0,
                "shots_on_target": 0.2833,
                "total_shots": 0.9077,
                "expected_assists": 0.0497,
                "key_pass": 0.6396,
                "rating": 6.7645,
                "minutes": 80.09,
                "total_pass": 22.3676,
                "accurate_pass": 18.1023,
                "duels_won": 4.7248,
                "total_long_balls": 2.2496,
                "accurate_long_balls": 1.1292,
                "total_opp_half_passes": 11.6617,
                "accurate_opp_half_passes": 8.3832,
                "crosses_total": 3.2525,
                "crosses_accurate": 0.4607,
                "touches": 45.1881,
                "possession_lost": 11.6889,
                "dispossessed": 0.3516,
                "duels_lost": 4.5973,
                "aerial_lost": 0.7377,
                "total_contest": 2.1232,
                "won_contest": 1.006,
                "ball_recovery": 3.4624,
                "challenges_lost": 0.9562,
                "fouls": 1.5807,
                "fouls_drawn": 1.0767,
                "assist_rate": 0.0758,
                "assists": 0,
                "interceptions": 1.0935,
                "tackles_won": 1.2197,
                "tackles": 2.0214,
                "clearances": 1.2041,
                "blocks": 0.1303,
                "big_chances_created": 0.1255,
                "big_chances_missed": 0.0049,
                "xgot": 0.0296,
                "offsides": 0.0796,
                "ball_carries": 11.8356,
                "total_progression": 72.0148,
                "progressive_carries": 1.8292,
                "shots_off_target": 0.6244,
                "duel_xg_multiplier": 0.9174,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0843,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0745,
                  "after": 0.0547
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 78.0)",
              "stats": {
                "expected_goals": 0.0547,
                "goal_rate": 0.085,
                "goals": 0,
                "shots_on_target": 0.2833,
                "total_shots": 0.9077,
                "expected_assists": 0.0497,
                "key_pass": 0.6396,
                "rating": 6.7645,
                "minutes": 80.09,
                "total_pass": 22.3676,
                "accurate_pass": 18.1023,
                "duels_won": 4.7248,
                "total_long_balls": 2.2496,
                "accurate_long_balls": 1.1292,
                "total_opp_half_passes": 11.6617,
                "accurate_opp_half_passes": 8.3832,
                "crosses_total": 3.2525,
                "crosses_accurate": 0.4607,
                "touches": 45.1881,
                "possession_lost": 11.6889,
                "dispossessed": 0.3516,
                "duels_lost": 4.5973,
                "aerial_lost": 0.7377,
                "total_contest": 2.1232,
                "won_contest": 1.006,
                "ball_recovery": 3.4624,
                "challenges_lost": 0.9562,
                "fouls": 1.5807,
                "fouls_drawn": 1.0767,
                "assist_rate": 0.0758,
                "assists": 0,
                "interceptions": 1.0935,
                "tackles_won": 1.2197,
                "tackles": 2.0214,
                "clearances": 1.2041,
                "blocks": 0.1303,
                "big_chances_created": 0.1255,
                "big_chances_missed": 0.0049,
                "xgot": 0.0296,
                "offsides": 0.0796,
                "ball_carries": 11.8356,
                "total_progression": 72.0148,
                "progressive_carries": 1.8292,
                "shots_off_target": 0.6244,
                "duel_xg_multiplier": 0.9174,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0843,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 1659,
                "fifa_rank": 1216.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.0547,
                "goal_rate": 0.085,
                "goals": 0,
                "shots_on_target": 0.2833,
                "total_shots": 0.9077,
                "expected_assists": 0.0497,
                "key_pass": 0.6396,
                "rating": 6.7645,
                "minutes": 80.09,
                "total_pass": 22.3676,
                "accurate_pass": 18.1023,
                "duels_won": 4.7248,
                "total_long_balls": 2.2496,
                "accurate_long_balls": 1.1292,
                "total_opp_half_passes": 11.6617,
                "accurate_opp_half_passes": 8.3832,
                "crosses_total": 3.2525,
                "crosses_accurate": 0.4607,
                "touches": 45.1881,
                "possession_lost": 11.6889,
                "dispossessed": 0.3516,
                "duels_lost": 4.5973,
                "aerial_lost": 0.7377,
                "total_contest": 2.1232,
                "won_contest": 1.006,
                "ball_recovery": 3.4624,
                "challenges_lost": 0.9562,
                "fouls": 1.5807,
                "fouls_drawn": 1.0767,
                "assist_rate": 0.0758,
                "assists": 0,
                "interceptions": 1.0935,
                "tackles_won": 1.2197,
                "tackles": 2.0214,
                "clearances": 1.2041,
                "blocks": 0.1303,
                "big_chances_created": 0.1255,
                "big_chances_missed": 0.0049,
                "xgot": 0.0296,
                "offsides": 0.0796,
                "ball_carries": 11.8356,
                "total_progression": 72.0148,
                "progressive_carries": 1.8292,
                "shots_off_target": 0.6244,
                "duel_xg_multiplier": 0.9174,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0532,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0843,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0532,
                "goal_rate": 0.085,
                "scorer_weight": 0.0593,
                "squad_weight_total": 0.9123,
                "weight_share": 0.065,
                "finishing_factor": 1.0843,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0547,
                "goal_rate": 0.085,
                "goals": 0,
                "shots_on_target": 0.2833,
                "total_shots": 0.9077,
                "expected_assists": 0.0497,
                "key_pass": 0.6396,
                "rating": 6.7645,
                "minutes": 80.09,
                "total_pass": 22.3676,
                "accurate_pass": 18.1023,
                "duels_won": 4.7248,
                "total_long_balls": 2.2496,
                "accurate_long_balls": 1.1292,
                "total_opp_half_passes": 11.6617,
                "accurate_opp_half_passes": 8.3832,
                "crosses_total": 3.2525,
                "crosses_accurate": 0.4607,
                "touches": 45.1881,
                "possession_lost": 11.6889,
                "dispossessed": 0.3516,
                "duels_lost": 4.5973,
                "aerial_lost": 0.7377,
                "total_contest": 2.1232,
                "won_contest": 1.006,
                "ball_recovery": 3.4624,
                "challenges_lost": 0.9562,
                "fouls": 1.5807,
                "fouls_drawn": 1.0767,
                "assist_rate": 0.0758,
                "assists": 0,
                "interceptions": 1.0935,
                "tackles_won": 1.2197,
                "tackles": 2.0214,
                "clearances": 1.2041,
                "blocks": 0.1303,
                "big_chances_created": 0.1255,
                "big_chances_missed": 0.0049,
                "xgot": 0.0296,
                "offsides": 0.0796,
                "ball_carries": 11.8356,
                "total_progression": 72.0148,
                "progressive_carries": 1.8292,
                "shots_off_target": 0.6244,
                "duel_xg_multiplier": 0.9174,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "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": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0532,
                "projected_assists": 0,
                "assist_probability": 0.0485,
                "finishing_factor": 1.0843,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0485,
                "assist_rate": 0.0758,
                "provider_weight": 0.0621,
                "squad_weight_total": 0.5324,
                "weight_share": 0.1167,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12
              }
            }
          ]
        },
        "Antonio Blanco": {
          "player_id": 855832,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 176,
          "market_value": 9700000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0548,
            "assist_rate": 0.0758,
            "assists": 0,
            "expected_goals": 0.0434,
            "goal_rate": 0.0606,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8422,
            "minutes": 83,
            "total_pass": 40,
            "accurate_pass": 35,
            "duels_won": 4,
            "total_long_balls": 4,
            "accurate_long_balls": 3,
            "total_own_half_passes": 22,
            "accurate_own_half_passes": 20,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 14,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 54,
            "possession_lost": 8.9135,
            "dispossessed": 1.0757,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0136,
            "ball_carries": 11,
            "total_progression": 29,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0866,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.8,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.479,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
            "numerical_situation": "1v1",
            "opponent_defenders": "Aleix Febas",
            "opponent_faced": "Aleix Febas",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0425,
            "projected_assists": 0,
            "assist_probability": 0.0533,
            "finishing_factor": 1.0137,
            "creation_factor": 1.2297,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 64,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0103,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 36,
                "clearances": 1,
                "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": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 15,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0022,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 7,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 85,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0093,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 31,
                "tackles": 3,
                "tackles_won": 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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 67,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0154,
                "expected_assists": 0.0078,
                "total_shots": 1,
                "total_pass": 32,
                "accurate_pass": 25,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 5,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0841,
                "expected_assists": 0.0948,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 58,
                "accurate_pass": 54,
                "tackles": 2,
                "tackles_won": 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"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0305,
                "expected_assists": 0.089,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 26,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 2,
                "interceptions": 4,
                "clearances": 3,
                "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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0154,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 41,
                "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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 89,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0741,
                "expected_assists": 0.0159,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 42,
                "accurate_pass": 39,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 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": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2105,
                "expected_assists": 0.0185,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 41,
                "accurate_pass": 37,
                "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": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0052,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 23,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2382,
            "combined_rank_score": 863.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 481.0,
            "sofascore_rating": 6.8722,
            "sofascore_appearances": 36.0,
            "fifa_rank": 1245.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8422,
            "source_file": "data/player_rankings.csv",
            "player_name": "Antonio Blanco",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Douglas Luiz",
                  "ranking": 2377
                },
                {
                  "player_name": "Bayron Oyarzo",
                  "ranking": 2378
                },
                {
                  "player_name": "Ignacio Mesías",
                  "ranking": 2379
                },
                {
                  "player_name": "Virgiliu Postolachi",
                  "ranking": 2380
                },
                {
                  "player_name": "Jung Se-jun",
                  "ranking": 2381
                }
              ],
              "lower": [
                {
                  "player_name": "Gorka Guruzeta",
                  "ranking": 2383
                },
                {
                  "player_name": "Alfon González",
                  "ranking": 2384
                },
                {
                  "player_name": "Rashid Abubakar",
                  "ranking": 2385
                },
                {
                  "player_name": "Fredrik André Bjørkan",
                  "ranking": 2386
                },
                {
                  "player_name": "Carlos Escobar",
                  "ranking": 2387
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 44,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 44,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0004,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 269.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.34,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (M_service) evaluated 44 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Alavés, rel: 0.20, 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.6687,
                "expected_assists": 0.0523,
                "assists": 0.0767,
                "assist_rate": 0.0767,
                "expected_goals": 0.0544,
                "goals": 0.0565,
                "goal_rate": 0.0565,
                "shots_on_target": 0.2113,
                "total_shots": 0.7916,
                "rating": 6.8422,
                "minutes": 82.51,
                "total_pass": 39.9136,
                "accurate_pass": 34.5289,
                "duels_won": 3.8964,
                "total_long_balls": 4.1563,
                "accurate_long_balls": 2.6599,
                "total_own_half_passes": 21.5017,
                "accurate_own_half_passes": 20.1576,
                "total_opp_half_passes": 18.4119,
                "accurate_opp_half_passes": 14.3714,
                "crosses_total": 0.9857,
                "crosses_accurate": 0.3594,
                "touches": 54.1775,
                "possession_lost": 8.9099,
                "dispossessed": 1.0753,
                "duels_lost": 5.0695,
                "aerial_won": 0.2809,
                "aerial_lost": 0.5803,
                "interceptions": 1.4299,
                "tackles_won": 0.87,
                "tackles": 2.0753,
                "clearances": 1.0064,
                "total_contest": 1.0194,
                "won_contest": 0.5867,
                "challenges_lost": 1.4497,
                "fouls": 1.5321,
                "fouls_drawn": 0.9589,
                "blocks": 0.1866,
                "big_chances_created": 0.0361,
                "big_chances_missed": 0.0,
                "xgot": 0.017,
                "ball_carries": 11.4025,
                "total_progression": 28.6899,
                "progressive_carries": 0.3015,
                "shots_off_target": 0.5803
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.1276,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.76,
                  "creative_index": 0.158,
                  "expectedGoals": 0.0303,
                  "expectedAssists": 0.0378,
                  "onTargetScoringAttempt": 0.0866
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6686944961547852,
                    "model_output": 0.6687,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1193
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.1095
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0572
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0496
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0391
                        }
                      ],
                      "others": -0.0882,
                      "total": 0.6687,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.125441
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.114495
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.065492
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.060425
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.050324
                        }
                      ],
                      "others_margin": -0.123943
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05226100981235504,
                    "model_output": 0.0523,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0119
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0119
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.009
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0081
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.0115,
                      "total": 0.0523,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130258
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.130237
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.111485
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.111168
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.071189
                        }
                      ],
                      "others_margin": -0.200084
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0767214447259903,
                    "model_output": 0.0767,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0079
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0071
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0063
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.005
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0034
                        }
                      ],
                      "others": 0.0034,
                      "total": 0.0767,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.087092
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.077892
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.074013
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.063602
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.045201
                        }
                      ],
                      "others_margin": 0.045115
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05441702529788017,
                    "model_output": 0.0544,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0198
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0101
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0077
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0072
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0032
                        }
                      ],
                      "others": -0.0063,
                      "total": 0.0544,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.236335
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.145928
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.127347
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119129
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.051675
                        }
                      ],
                      "others_margin": -0.107597
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.0565294548869133,
                    "model_output": 0.0565,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0136
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0105
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0074
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0067
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0129,
                      "total": 0.0565,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.149803
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.133749
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.106628
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.096881
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.051062
                        }
                      ],
                      "others_margin": -0.203686
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2113267034292221,
                    "model_output": 0.2113,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0619
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0327
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0324
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0232
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0067
                        }
                      ],
                      "others": -0.0223,
                      "total": 0.2113,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.210681
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.132331
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.131163
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.09219
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.028416
                        }
                      ],
                      "others_margin": -0.100207
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7916499376296997,
                    "model_output": 0.7916,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1293
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0831
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0544
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0491
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0413
                        }
                      ],
                      "others": -0.1053,
                      "total": 0.7916,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129324
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.083076
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.054376
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.049105
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.041266
                        }
                      ],
                      "others_margin": -0.105386
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.842208385467529,
                    "model_output": 6.8422,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0314
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0278
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0191
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0189
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0081
                        }
                      ],
                      "others": -0.024,
                      "total": 6.8422,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.031395
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.027765
                        },
                        {
                          "name": "rating",
                          "margin": -0.019114
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.018855
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.008096
                        }
                      ],
                      "others_margin": -0.023942
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 44,
                  "role_matches": 43,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0004, quality 0.519)",
              "stats": {
                "key_pass": 0.669,
                "expected_assists": 0.0523,
                "assists": 0.0768,
                "assist_rate": 0.0768,
                "expected_goals": 0.0544,
                "goals": 0.0566,
                "goal_rate": 0.0566,
                "shots_on_target": 0.2114,
                "total_shots": 0.792,
                "rating": 6.8422,
                "minutes": 82.51,
                "total_pass": 39.9296,
                "accurate_pass": 34.5427,
                "duels_won": 3.898,
                "total_long_balls": 4.158,
                "accurate_long_balls": 2.661,
                "total_own_half_passes": 21.5103,
                "accurate_own_half_passes": 20.1657,
                "total_opp_half_passes": 18.4193,
                "accurate_opp_half_passes": 14.3771,
                "crosses_total": 0.9861,
                "crosses_accurate": 0.3595,
                "touches": 54.1992,
                "possession_lost": 8.9135,
                "dispossessed": 1.0757,
                "duels_lost": 5.0715,
                "aerial_won": 0.281,
                "aerial_lost": 0.5805,
                "interceptions": 1.4305,
                "tackles_won": 0.8703,
                "tackles": 2.0761,
                "clearances": 1.0068,
                "total_contest": 1.0198,
                "won_contest": 0.5869,
                "challenges_lost": 1.4503,
                "fouls": 1.5327,
                "fouls_drawn": 0.9593,
                "blocks": 0.1867,
                "big_chances_created": 0.0361,
                "big_chances_missed": 0.0,
                "xgot": 0.017,
                "ball_carries": 11.4071,
                "total_progression": 28.7014,
                "progressive_carries": 0.3016,
                "shots_off_target": 0.5805
              },
              "params": {
                "market_value_eur": 9700000,
                "quality_factor": 0.5189,
                "boost_factor": 1.0004,
                "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": {
                "key_pass": 0.669,
                "expected_assists": 0.0523,
                "assists": 0.0758,
                "assist_rate": 0.0758,
                "expected_goals": 0.0544,
                "goals": 0.0558,
                "goal_rate": 0.0558,
                "shots_on_target": 0.2086,
                "total_shots": 0.7978,
                "rating": 6.8422,
                "minutes": 82.51,
                "total_pass": 39.9296,
                "accurate_pass": 34.5427,
                "duels_won": 3.898,
                "total_long_balls": 4.158,
                "accurate_long_balls": 2.661,
                "total_own_half_passes": 21.5103,
                "accurate_own_half_passes": 20.1657,
                "total_opp_half_passes": 18.4193,
                "accurate_opp_half_passes": 14.3771,
                "crosses_total": 0.9933,
                "crosses_accurate": 0.3595,
                "touches": 54.1992,
                "possession_lost": 8.9135,
                "dispossessed": 1.0757,
                "duels_lost": 5.0715,
                "aerial_won": 0.281,
                "aerial_lost": 0.5805,
                "interceptions": 1.444,
                "tackles_won": 0.875,
                "tackles": 2.0761,
                "clearances": 1.0068,
                "total_contest": 1.0198,
                "won_contest": 0.5869,
                "challenges_lost": 1.4503,
                "fouls": 1.5489,
                "fouls_drawn": 0.9547,
                "blocks": 0.1867,
                "big_chances_created": 0.0361,
                "big_chances_missed": 0.0,
                "xgot": 0.017,
                "ball_carries": 11.4071,
                "total_progression": 28.7014,
                "progressive_carries": 0.3016,
                "shots_off_target": 0.5805
              },
              "params": {
                "blend_weight": 0.0133,
                "history_matches": 44,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9168,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Alavés"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.5327,
                  "after": 1.5489
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.4305,
                  "after": 1.444
                },
                {
                  "stat": "totalCross",
                  "before": 0.9861,
                  "after": 0.9933
                },
                {
                  "stat": "totalShots",
                  "before": 0.792,
                  "after": 0.7978
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.669,
                "expected_assists": 0.0523,
                "assists": 0.0758,
                "assist_rate": 0.0758,
                "expected_goals": 0.0544,
                "goals": 0.0558,
                "goal_rate": 0.0558,
                "shots_on_target": 0.2086,
                "total_shots": 0.7978,
                "rating": 6.8422,
                "minutes": 82.51,
                "total_pass": 39.9296,
                "accurate_pass": 34.5427,
                "duels_won": 3.898,
                "total_long_balls": 4.158,
                "accurate_long_balls": 2.661,
                "total_own_half_passes": 21.5103,
                "accurate_own_half_passes": 20.1657,
                "total_opp_half_passes": 18.4193,
                "accurate_opp_half_passes": 14.3771,
                "crosses_total": 0.9933,
                "crosses_accurate": 0.3595,
                "touches": 54.1992,
                "possession_lost": 8.9135,
                "dispossessed": 1.0757,
                "duels_lost": 5.0715,
                "aerial_won": 0.281,
                "aerial_lost": 0.5805,
                "interceptions": 1.444,
                "tackles_won": 0.875,
                "tackles": 2.0761,
                "clearances": 1.0068,
                "total_contest": 1.0198,
                "won_contest": 0.5869,
                "challenges_lost": 1.4503,
                "fouls": 1.5489,
                "fouls_drawn": 0.9547,
                "blocks": 0.1867,
                "big_chances_created": 0.0361,
                "big_chances_missed": 0.0,
                "xgot": 0.017,
                "ball_carries": 11.4071,
                "total_progression": 28.7014,
                "progressive_carries": 0.3016,
                "shots_off_target": 0.5805
              },
              "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.669,
                "expected_assists": 0.0523,
                "assists": 0.0758,
                "assist_rate": 0.0758,
                "expected_goals": 0.0591,
                "goals": 0.0606,
                "goal_rate": 0.0606,
                "shots_on_target": 0.2267,
                "total_shots": 0.8669,
                "rating": 6.8422,
                "minutes": 82.51,
                "total_pass": 39.9296,
                "accurate_pass": 34.5427,
                "duels_won": 3.898,
                "total_long_balls": 4.158,
                "accurate_long_balls": 2.661,
                "total_own_half_passes": 21.5103,
                "accurate_own_half_passes": 20.1657,
                "total_opp_half_passes": 18.4193,
                "accurate_opp_half_passes": 14.3771,
                "crosses_total": 0.9933,
                "crosses_accurate": 0.3595,
                "touches": 54.1992,
                "possession_lost": 8.9135,
                "dispossessed": 1.0757,
                "duels_lost": 5.0715,
                "aerial_won": 0.9,
                "aerial_lost": 0.5805,
                "interceptions": 1.444,
                "tackles_won": 0.875,
                "tackles": 2.0761,
                "clearances": 1.0068,
                "total_contest": 1.0198,
                "won_contest": 0.5869,
                "challenges_lost": 1.4503,
                "fouls": 1.5489,
                "fouls_drawn": 0.9547,
                "blocks": 0.1867,
                "big_chances_created": 0.0361,
                "big_chances_missed": 0.0,
                "xgot": 0.0185,
                "ball_carries": 11.4071,
                "total_progression": 28.7014,
                "progressive_carries": 0.3016,
                "shots_off_target": 0.6308,
                "duel_xg_multiplier": 1.0866,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.479,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Aleix Febas",
                  "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                  "duel_win_rate": 0.479,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.0866,
                  "skill_edge": 0.0269,
                  "height_edge": 0.032,
                  "attacker_skill": 0.5316,
                  "defender_skill": 0.4717,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Aleix Febas",
                      "market_value": 5200000,
                      "role": "CM",
                      "price_index": 0.9,
                      "adjusted_quality": 0.4717
                    }
                  ],
                  "xg_override": 0.0591
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.281,
                  "after": 0.9
                },
                {
                  "stat": "totalShots",
                  "before": 0.7978,
                  "after": 0.8669
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.5805,
                  "after": 0.6308
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2086,
                  "after": 0.2267
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.669,
                "expected_assists": 0.0523,
                "assist_rate": 0.0758,
                "assists": 0,
                "expected_goals": 0.0591,
                "goal_rate": 0.0606,
                "goals": 0,
                "shots_on_target": 0.2267,
                "total_shots": 0.8669,
                "rating": 6.8422,
                "minutes": 82.51,
                "total_pass": 39.9296,
                "accurate_pass": 34.5427,
                "duels_won": 3.898,
                "total_long_balls": 4.158,
                "accurate_long_balls": 2.661,
                "total_own_half_passes": 21.5103,
                "accurate_own_half_passes": 20.1657,
                "total_opp_half_passes": 18.4193,
                "accurate_opp_half_passes": 14.3771,
                "crosses_total": 0.9933,
                "crosses_accurate": 0.3595,
                "touches": 54.1992,
                "possession_lost": 8.9135,
                "dispossessed": 1.0757,
                "duels_lost": 5.0715,
                "aerial_won": 0.9,
                "aerial_lost": 0.5805,
                "interceptions": 1.444,
                "tackles_won": 0.875,
                "tackles": 2.0761,
                "clearances": 1.0068,
                "total_contest": 1.0198,
                "won_contest": 0.5869,
                "challenges_lost": 1.4503,
                "fouls": 1.5489,
                "fouls_drawn": 0.9547,
                "blocks": 0.1867,
                "big_chances_created": 0.0361,
                "big_chances_missed": 0.0,
                "xgot": 0.0185,
                "ball_carries": 11.4071,
                "total_progression": 28.7014,
                "progressive_carries": 0.3016,
                "shots_off_target": 0.6308,
                "duel_xg_multiplier": 1.0866,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.479,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.669,
                "expected_assists": 0.0548,
                "assist_rate": 0.0758,
                "assists": 0,
                "expected_goals": 0.0434,
                "goal_rate": 0.0606,
                "goals": 0,
                "shots_on_target": 0.2267,
                "total_shots": 0.8669,
                "rating": 6.8422,
                "minutes": 82.51,
                "total_pass": 39.9296,
                "accurate_pass": 34.5427,
                "duels_won": 3.898,
                "total_long_balls": 4.158,
                "accurate_long_balls": 2.661,
                "total_own_half_passes": 21.5103,
                "accurate_own_half_passes": 20.1657,
                "total_opp_half_passes": 18.4193,
                "accurate_opp_half_passes": 14.3771,
                "crosses_total": 0.9933,
                "crosses_accurate": 0.3595,
                "touches": 54.1992,
                "possession_lost": 8.9135,
                "dispossessed": 1.0757,
                "duels_lost": 5.0715,
                "aerial_won": 0.9,
                "aerial_lost": 0.5805,
                "interceptions": 1.444,
                "tackles_won": 0.875,
                "tackles": 2.0761,
                "clearances": 1.0068,
                "total_contest": 1.0198,
                "won_contest": 0.5869,
                "challenges_lost": 1.4503,
                "fouls": 1.5489,
                "fouls_drawn": 0.9547,
                "blocks": 0.1867,
                "big_chances_created": 0.0361,
                "big_chances_missed": 0.0,
                "xgot": 0.0136,
                "ball_carries": 11.4071,
                "total_progression": 28.7014,
                "progressive_carries": 0.3016,
                "shots_off_target": 0.6308,
                "duel_xg_multiplier": 1.0866,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.479,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0137,
                "creation_factor": 1.2297
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0591,
                  "after": 0.0434
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 78.0)",
              "stats": {
                "key_pass": 0.669,
                "expected_assists": 0.0548,
                "assist_rate": 0.0758,
                "assists": 0,
                "expected_goals": 0.0434,
                "goal_rate": 0.0606,
                "goals": 0,
                "shots_on_target": 0.2267,
                "total_shots": 0.8669,
                "rating": 6.8422,
                "minutes": 82.51,
                "total_pass": 39.9296,
                "accurate_pass": 34.5427,
                "duels_won": 3.898,
                "total_long_balls": 4.158,
                "accurate_long_balls": 2.661,
                "total_own_half_passes": 21.5103,
                "accurate_own_half_passes": 20.1657,
                "total_opp_half_passes": 18.4193,
                "accurate_opp_half_passes": 14.3771,
                "crosses_total": 0.9933,
                "crosses_accurate": 0.3595,
                "touches": 54.1992,
                "possession_lost": 8.9135,
                "dispossessed": 1.0757,
                "duels_lost": 5.0715,
                "aerial_won": 0.9,
                "aerial_lost": 0.5805,
                "interceptions": 1.444,
                "tackles_won": 0.875,
                "tackles": 2.0761,
                "clearances": 1.0068,
                "total_contest": 1.0198,
                "won_contest": 0.5869,
                "challenges_lost": 1.4503,
                "fouls": 1.5489,
                "fouls_drawn": 0.9547,
                "blocks": 0.1867,
                "big_chances_created": 0.0361,
                "big_chances_missed": 0.0,
                "xgot": 0.0136,
                "ball_carries": 11.4071,
                "total_progression": 28.7014,
                "progressive_carries": 0.3016,
                "shots_off_target": 0.6308,
                "duel_xg_multiplier": 1.0866,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.479,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0137,
                "creation_factor": 1.2297,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2382,
                "fifa_rank": 1245.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.669,
                "expected_assists": 0.0548,
                "assist_rate": 0.0758,
                "assists": 0,
                "expected_goals": 0.0434,
                "goal_rate": 0.0606,
                "goals": 0,
                "shots_on_target": 0.2267,
                "total_shots": 0.8669,
                "rating": 6.8422,
                "minutes": 82.51,
                "total_pass": 39.9296,
                "accurate_pass": 34.5427,
                "duels_won": 3.898,
                "total_long_balls": 4.158,
                "accurate_long_balls": 2.661,
                "total_own_half_passes": 21.5103,
                "accurate_own_half_passes": 20.1657,
                "total_opp_half_passes": 18.4193,
                "accurate_opp_half_passes": 14.3771,
                "crosses_total": 0.9933,
                "crosses_accurate": 0.3595,
                "touches": 54.1992,
                "possession_lost": 8.9135,
                "dispossessed": 1.0757,
                "duels_lost": 5.0715,
                "aerial_won": 0.9,
                "aerial_lost": 0.5805,
                "interceptions": 1.444,
                "tackles_won": 0.875,
                "tackles": 2.0761,
                "clearances": 1.0068,
                "total_contest": 1.0198,
                "won_contest": 0.5869,
                "challenges_lost": 1.4503,
                "fouls": 1.5489,
                "fouls_drawn": 0.9547,
                "blocks": 0.1867,
                "big_chances_created": 0.0361,
                "big_chances_missed": 0.0,
                "xgot": 0.0136,
                "ball_carries": 11.4071,
                "total_progression": 28.7014,
                "progressive_carries": 0.3016,
                "shots_off_target": 0.6308,
                "duel_xg_multiplier": 1.0866,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.479,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0425,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0137,
                "creation_factor": 1.2297,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0425,
                "goal_rate": 0.0606,
                "scorer_weight": 0.044,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0482,
                "finishing_factor": 1.0137,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.669,
                "expected_assists": 0.0548,
                "assist_rate": 0.0758,
                "assists": 0,
                "expected_goals": 0.0434,
                "goal_rate": 0.0606,
                "goals": 0,
                "shots_on_target": 0.2267,
                "total_shots": 0.8669,
                "rating": 6.8422,
                "minutes": 82.51,
                "total_pass": 39.9296,
                "accurate_pass": 34.5427,
                "duels_won": 3.898,
                "total_long_balls": 4.158,
                "accurate_long_balls": 2.661,
                "total_own_half_passes": 21.5103,
                "accurate_own_half_passes": 20.1657,
                "total_opp_half_passes": 18.4193,
                "accurate_opp_half_passes": 14.3771,
                "crosses_total": 0.9933,
                "crosses_accurate": 0.3595,
                "touches": 54.1992,
                "possession_lost": 8.9135,
                "dispossessed": 1.0757,
                "duels_lost": 5.0715,
                "aerial_won": 0.9,
                "aerial_lost": 0.5805,
                "interceptions": 1.444,
                "tackles_won": 0.875,
                "tackles": 2.0761,
                "clearances": 1.0068,
                "total_contest": 1.0198,
                "won_contest": 0.5869,
                "challenges_lost": 1.4503,
                "fouls": 1.5489,
                "fouls_drawn": 0.9547,
                "blocks": 0.1867,
                "big_chances_created": 0.0361,
                "big_chances_missed": 0.0,
                "xgot": 0.0136,
                "ball_carries": 11.4071,
                "total_progression": 28.7014,
                "progressive_carries": 0.3016,
                "shots_off_target": 0.6308,
                "duel_xg_multiplier": 1.0866,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.479,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0425,
                "projected_assists": 0,
                "assist_probability": 0.0533,
                "finishing_factor": 1.0137,
                "creation_factor": 1.2297,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0533,
                "assist_rate": 0.0758,
                "provider_weight": 0.0674,
                "squad_weight_total": 0.5324,
                "weight_share": 0.1266,
                "creation_factor": 1.2297,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12
              }
            }
          ]
        },
        "Denis Suárez": {
          "player_id": 138383,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 4,
          "height": 176,
          "market_value": 1100000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.1683,
            "assist_rate": 0.1369,
            "assists": 0,
            "expected_goals": 0.0651,
            "goal_rate": 0.0994,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.9305,
            "minutes": 72,
            "total_pass": 31,
            "accurate_pass": 25,
            "duels_won": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 11,
            "accurate_own_half_passes": 10,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 15,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 45,
            "possession_lost": 11.8563,
            "dispossessed": 0.7016,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0402,
            "ball_carries": 15,
            "total_progression": 63,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0244,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.8,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.437,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
            "numerical_situation": "1v1",
            "opponent_defenders": "Aleix Febas",
            "opponent_faced": "Aleix Febas",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.063,
            "projected_assists": 0,
            "assist_probability": 0.1549,
            "finishing_factor": 1.0779,
            "creation_factor": 0.8879,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 79,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3531,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 28,
                "key_pass": 2,
                "interceptions": 2,
                "clearances": 2,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 67,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.208,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 21,
                "key_pass": 2,
                "tackles": 2,
                "tackles_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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1075,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 35,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 19,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1615,
                "expected_assists": 0.0067,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 14,
                "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": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 19,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0326,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 5,
                "key_pass": 2,
                "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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 28,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2808,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 19,
                "key_pass": 2,
                "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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 57,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3698,
                "expected_assists": 0.1374,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 26,
                "accurate_pass": 18,
                "key_pass": 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": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 16,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0437,
                "expected_assists": 0.0824,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 16,
                "accurate_pass": 14,
                "key_pass": 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": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 69,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0502,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 1,
                "tackles_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": 14083603,
              "match_date": "2026-05-13",
              "home_team": "Deportivo Alavés",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 64,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0095,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 14,
                "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": 3706,
            "combined_rank_score": 1661.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2878.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9305,
            "source_file": "data/player_rankings.csv",
            "player_name": "Denis Suárez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jean-Ricner Bellegarde",
                  "ranking": 3701
                },
                {
                  "player_name": "Kervin Arriaga",
                  "ranking": 3702
                },
                {
                  "player_name": "Bryan Gil",
                  "ranking": 3703
                },
                {
                  "player_name": "Taiwo Awoniyi",
                  "ranking": 3704
                },
                {
                  "player_name": "Ismail Jakobs",
                  "ranking": 3705
                }
              ],
              "lower": [
                {
                  "player_name": "Ernest Muçi",
                  "ranking": 3707
                },
                {
                  "player_name": "Gabriel Suazo",
                  "ranking": 3708
                },
                {
                  "player_name": "İrfan Can Kahveci",
                  "ranking": 3709
                },
                {
                  "player_name": "Lucas Beltrán",
                  "ranking": 3710
                },
                {
                  "player_name": "Niclas Eliasson",
                  "ranking": 3711
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.762,
          "history_matches": 37,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 37,
            "data_confidence": 0.762,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9976,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "minutes": 105.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.86,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.08
            },
            "rationale": "XGBoost regressor (M_service) evaluated 37 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Alavés, rel: 0.08, 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.7725,
                "expected_assists": 0.1609,
                "assists": 0.1381,
                "assist_rate": 0.1381,
                "expected_goals": 0.0867,
                "goals": 0.0978,
                "goal_rate": 0.0978,
                "shots_on_target": 0.3108,
                "total_shots": 0.9436,
                "rating": 6.9305,
                "minutes": 71.71,
                "total_pass": 30.7445,
                "accurate_pass": 24.9713,
                "duels_won": 3.113,
                "total_long_balls": 2.6857,
                "accurate_long_balls": 1.0917,
                "total_own_half_passes": 10.9226,
                "accurate_own_half_passes": 9.8719,
                "total_opp_half_passes": 19.8218,
                "accurate_opp_half_passes": 15.0993,
                "crosses_total": 3.7227,
                "crosses_accurate": 1.2294,
                "touches": 44.6905,
                "possession_lost": 11.8848,
                "dispossessed": 0.7033,
                "duels_lost": 4.1291,
                "aerial_won": 0.1105,
                "aerial_lost": 0.4387,
                "interceptions": 0.3767,
                "tackles_won": 0.5806,
                "tackles": 0.955,
                "clearances": 0.5192,
                "total_contest": 1.9539,
                "won_contest": 0.9007,
                "challenges_lost": 1.2428,
                "fouls": 0.691,
                "fouls_drawn": 1.1469,
                "blocks": 0.0448,
                "big_chances_created": 0.0309,
                "big_chances_missed": 0.1308,
                "xgot": 0.0535,
                "ball_carries": 14.5842,
                "total_progression": 63.2692,
                "progressive_carries": 1.1974,
                "shots_off_target": 0.6327
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.0923,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.0785,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 57.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0482,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "FC Barcelona",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.2727,
                  "creative_index": 0.6799,
                  "expectedGoals": 0.0428,
                  "expectedAssists": 0.1393,
                  "onTargetScoringAttempt": 0.1152
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.7724543809890747,
                    "model_output": 1.7725,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": 0.124
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1379
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1072
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0933
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0922
                        }
                      ],
                      "others": 0.3249,
                      "total": 1.7725,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.130002
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.127195
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.088782
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.071343
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.0658
                        }
                      ],
                      "others_margin": 0.202433
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.16091033816337585,
                    "model_output": 0.1609,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": 0.0129
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0117
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0103
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0057
                        }
                      ],
                      "others": 0.0269,
                      "total": 0.1609,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.140041
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.112128
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.089317
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.062498
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.043789
                        }
                      ],
                      "others_margin": 0.18292
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.13814273476600647,
                    "model_output": 0.1381,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": 0.0079
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0074
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0066
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0067
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0068
                        }
                      ],
                      "others": 0.0155,
                      "total": 0.1381,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.086749
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.074466
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.062602
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.05959
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.05743
                        }
                      ],
                      "others_margin": 0.118768
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08671822398900986,
                    "model_output": 0.0867,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0203
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0122
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0093
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0061
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0044
                        }
                      ],
                      "others": -0.0071,
                      "total": 0.0867,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.242748
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.152161
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.102086
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.066031
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.048435
                        }
                      ],
                      "others_margin": -0.077666
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.09782655537128448,
                    "model_output": 0.0978,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0151
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0112
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0109
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0075
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0062
                        }
                      ],
                      "others": -0.0057,
                      "total": 0.0978,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.167739
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12714
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.110139
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.074426
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.06211
                        }
                      ],
                      "others_margin": -0.056838
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.31080302596092224,
                    "model_output": 0.3108,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0773
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0374
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0305
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0177
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0158
                        }
                      ],
                      "others": -0.0036,
                      "total": 0.3108,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.271013
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.140305
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.101352
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.057586
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.051514
                        }
                      ],
                      "others_margin": -0.01148
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9435513019561768,
                    "model_output": 0.9436,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2862
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1421
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0932
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0326
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0238
                        }
                      ],
                      "others": -0.0098,
                      "total": 0.9436,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.286207
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.142149
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.09319
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.032551
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.023826
                        }
                      ],
                      "others_margin": -0.00984
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.930456161499023,
                    "model_output": 6.9305,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0342
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0301
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0217
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0088
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.008
                        }
                      ],
                      "others": 0.018,
                      "total": 6.9305,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.034226
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.030148
                        },
                        {
                          "name": "rating",
                          "margin": -0.021708
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.008761
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.00795
                        }
                      ],
                      "others_margin": 0.018025
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 37,
                  "role_matches": 19,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9976, quality 0.437)",
              "stats": {
                "key_pass": 1.7682,
                "expected_assists": 0.1605,
                "assists": 0.1378,
                "assist_rate": 0.1378,
                "expected_goals": 0.0865,
                "goals": 0.0976,
                "goal_rate": 0.0976,
                "shots_on_target": 0.3101,
                "total_shots": 0.9413,
                "rating": 6.9305,
                "minutes": 71.71,
                "total_pass": 30.6707,
                "accurate_pass": 24.9114,
                "duels_won": 3.1055,
                "total_long_balls": 2.6793,
                "accurate_long_balls": 1.0891,
                "total_own_half_passes": 10.8964,
                "accurate_own_half_passes": 9.8482,
                "total_opp_half_passes": 19.7742,
                "accurate_opp_half_passes": 15.0631,
                "crosses_total": 3.7138,
                "crosses_accurate": 1.2264,
                "touches": 44.5832,
                "possession_lost": 11.8563,
                "dispossessed": 0.7016,
                "duels_lost": 4.1192,
                "aerial_won": 0.1102,
                "aerial_lost": 0.4376,
                "interceptions": 0.3758,
                "tackles_won": 0.5792,
                "tackles": 0.9527,
                "clearances": 0.518,
                "total_contest": 1.9492,
                "won_contest": 0.8985,
                "challenges_lost": 1.2398,
                "fouls": 0.6893,
                "fouls_drawn": 1.1441,
                "blocks": 0.0447,
                "big_chances_created": 0.0308,
                "big_chances_missed": 0.1305,
                "xgot": 0.0534,
                "ball_carries": 14.5492,
                "total_progression": 63.1174,
                "progressive_carries": 1.1945,
                "shots_off_target": 0.6312
              },
              "params": {
                "market_value_eur": 1100000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9976,
                "reference_quality": 0.505,
                "history_matches": 37,
                "history_shrink": 0.119,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0062)",
              "stats": {
                "key_pass": 1.7682,
                "expected_assists": 0.1605,
                "assists": 0.1369,
                "assist_rate": 0.1369,
                "expected_goals": 0.0865,
                "goals": 0.097,
                "goal_rate": 0.097,
                "shots_on_target": 0.3124,
                "total_shots": 0.9397,
                "rating": 6.9305,
                "minutes": 71.71,
                "total_pass": 30.6707,
                "accurate_pass": 24.9114,
                "duels_won": 3.1055,
                "total_long_balls": 2.6793,
                "accurate_long_balls": 1.0891,
                "total_own_half_passes": 10.8964,
                "accurate_own_half_passes": 9.8482,
                "total_opp_half_passes": 19.7742,
                "accurate_opp_half_passes": 15.0631,
                "crosses_total": 3.7484,
                "crosses_accurate": 1.2264,
                "touches": 44.5832,
                "possession_lost": 11.8563,
                "dispossessed": 0.7016,
                "duels_lost": 4.1192,
                "aerial_won": 0.1102,
                "aerial_lost": 0.4376,
                "interceptions": 0.3735,
                "tackles_won": 0.5797,
                "tackles": 0.9527,
                "clearances": 0.518,
                "total_contest": 1.9492,
                "won_contest": 0.8985,
                "challenges_lost": 1.2398,
                "fouls": 0.6974,
                "fouls_drawn": 1.1411,
                "blocks": 0.0447,
                "big_chances_created": 0.0308,
                "big_chances_missed": 0.1305,
                "xgot": 0.0534,
                "ball_carries": 14.5492,
                "total_progression": 63.1174,
                "progressive_carries": 1.1945,
                "shots_off_target": 0.6312
              },
              "params": {
                "blend_weight": 0.0062,
                "history_matches": 37,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.7968,
                "prior_reliability": 0.08,
                "competition": "La Liga",
                "squad": "Alavés"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 3.7138,
                  "after": 3.7484
                },
                {
                  "stat": "fouls",
                  "before": 0.6893,
                  "after": 0.6974
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.7682,
                "expected_assists": 0.1605,
                "assists": 0.1369,
                "assist_rate": 0.1369,
                "expected_goals": 0.0865,
                "goals": 0.097,
                "goal_rate": 0.097,
                "shots_on_target": 0.3124,
                "total_shots": 0.9436,
                "rating": 6.9305,
                "minutes": 71.71,
                "total_pass": 30.6707,
                "accurate_pass": 24.9114,
                "duels_won": 3.1055,
                "total_long_balls": 2.6793,
                "accurate_long_balls": 1.0891,
                "total_own_half_passes": 10.8964,
                "accurate_own_half_passes": 9.8482,
                "total_opp_half_passes": 19.7742,
                "accurate_opp_half_passes": 15.0631,
                "crosses_total": 3.7484,
                "crosses_accurate": 1.2264,
                "touches": 44.5832,
                "possession_lost": 11.8563,
                "dispossessed": 0.7016,
                "duels_lost": 4.1192,
                "aerial_won": 0.1102,
                "aerial_lost": 0.4376,
                "interceptions": 0.3735,
                "tackles_won": 0.5797,
                "tackles": 0.9527,
                "clearances": 0.518,
                "total_contest": 1.9492,
                "won_contest": 0.8985,
                "challenges_lost": 1.2398,
                "fouls": 0.6974,
                "fouls_drawn": 1.1411,
                "blocks": 0.0447,
                "big_chances_created": 0.0308,
                "big_chances_missed": 0.1305,
                "xgot": 0.0534,
                "ball_carries": 14.5492,
                "total_progression": 63.1174,
                "progressive_carries": 1.1945,
                "shots_off_target": 0.6312
              },
              "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.7682,
                "expected_assists": 0.1605,
                "assists": 0.1369,
                "assist_rate": 0.1369,
                "expected_goals": 0.0886,
                "goals": 0.0994,
                "goal_rate": 0.0994,
                "shots_on_target": 0.32,
                "total_shots": 0.9666,
                "rating": 6.9305,
                "minutes": 71.71,
                "total_pass": 30.6707,
                "accurate_pass": 24.9114,
                "duels_won": 3.1055,
                "total_long_balls": 2.6793,
                "accurate_long_balls": 1.0891,
                "total_own_half_passes": 10.8964,
                "accurate_own_half_passes": 9.8482,
                "total_opp_half_passes": 19.7742,
                "accurate_opp_half_passes": 15.0631,
                "crosses_total": 3.7484,
                "crosses_accurate": 1.2264,
                "touches": 44.5832,
                "possession_lost": 11.8563,
                "dispossessed": 0.7016,
                "duels_lost": 4.1192,
                "aerial_won": 0.9,
                "aerial_lost": 0.4376,
                "interceptions": 0.3735,
                "tackles_won": 0.5797,
                "tackles": 0.9527,
                "clearances": 0.518,
                "total_contest": 1.9492,
                "won_contest": 0.8985,
                "challenges_lost": 1.2398,
                "fouls": 0.6974,
                "fouls_drawn": 1.1411,
                "blocks": 0.0447,
                "big_chances_created": 0.0308,
                "big_chances_missed": 0.1337,
                "xgot": 0.0547,
                "ball_carries": 14.5492,
                "total_progression": 63.1174,
                "progressive_carries": 1.1945,
                "shots_off_target": 0.6466,
                "duel_xg_multiplier": 1.0244,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Aleix Febas",
                  "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                  "duel_win_rate": 0.437,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.0244,
                  "skill_edge": -0.0154,
                  "height_edge": 0.032,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.4717,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Aleix Febas",
                      "market_value": 5200000,
                      "role": "CM",
                      "price_index": 0.9,
                      "adjusted_quality": 0.4717
                    }
                  ],
                  "xg_override": 0.0886
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.1102,
                  "after": 0.9
                },
                {
                  "stat": "totalShots",
                  "before": 0.9436,
                  "after": 0.9666
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.6312,
                  "after": 0.6466
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3124,
                  "after": 0.32
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 1.7682,
                "expected_assists": 0.1605,
                "assist_rate": 0.1369,
                "assists": 0,
                "expected_goals": 0.0886,
                "goal_rate": 0.0994,
                "goals": 0,
                "shots_on_target": 0.32,
                "total_shots": 0.9666,
                "rating": 6.9305,
                "minutes": 71.71,
                "total_pass": 30.6707,
                "accurate_pass": 24.9114,
                "duels_won": 3.1055,
                "total_long_balls": 2.6793,
                "accurate_long_balls": 1.0891,
                "total_own_half_passes": 10.8964,
                "accurate_own_half_passes": 9.8482,
                "total_opp_half_passes": 19.7742,
                "accurate_opp_half_passes": 15.0631,
                "crosses_total": 3.7484,
                "crosses_accurate": 1.2264,
                "touches": 44.5832,
                "possession_lost": 11.8563,
                "dispossessed": 0.7016,
                "duels_lost": 4.1192,
                "aerial_won": 0.9,
                "aerial_lost": 0.4376,
                "interceptions": 0.3735,
                "tackles_won": 0.5797,
                "tackles": 0.9527,
                "clearances": 0.518,
                "total_contest": 1.9492,
                "won_contest": 0.8985,
                "challenges_lost": 1.2398,
                "fouls": 0.6974,
                "fouls_drawn": 1.1411,
                "blocks": 0.0447,
                "big_chances_created": 0.0308,
                "big_chances_missed": 0.1337,
                "xgot": 0.0547,
                "ball_carries": 14.5492,
                "total_progression": 63.1174,
                "progressive_carries": 1.1945,
                "shots_off_target": 0.6466,
                "duel_xg_multiplier": 1.0244,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "key_pass": 1.7682,
                "expected_assists": 0.1683,
                "assist_rate": 0.1369,
                "assists": 0,
                "expected_goals": 0.0651,
                "goal_rate": 0.0994,
                "goals": 0,
                "shots_on_target": 0.32,
                "total_shots": 0.9666,
                "rating": 6.9305,
                "minutes": 71.71,
                "total_pass": 30.6707,
                "accurate_pass": 24.9114,
                "duels_won": 3.1055,
                "total_long_balls": 2.6793,
                "accurate_long_balls": 1.0891,
                "total_own_half_passes": 10.8964,
                "accurate_own_half_passes": 9.8482,
                "total_opp_half_passes": 19.7742,
                "accurate_opp_half_passes": 15.0631,
                "crosses_total": 3.7484,
                "crosses_accurate": 1.2264,
                "touches": 44.5832,
                "possession_lost": 11.8563,
                "dispossessed": 0.7016,
                "duels_lost": 4.1192,
                "aerial_won": 0.9,
                "aerial_lost": 0.4376,
                "interceptions": 0.3735,
                "tackles_won": 0.5797,
                "tackles": 0.9527,
                "clearances": 0.518,
                "total_contest": 1.9492,
                "won_contest": 0.8985,
                "challenges_lost": 1.2398,
                "fouls": 0.6974,
                "fouls_drawn": 1.1411,
                "blocks": 0.0447,
                "big_chances_created": 0.0308,
                "big_chances_missed": 0.1337,
                "xgot": 0.0402,
                "ball_carries": 14.5492,
                "total_progression": 63.1174,
                "progressive_carries": 1.1945,
                "shots_off_target": 0.6466,
                "duel_xg_multiplier": 1.0244,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0779,
                "creation_factor": 0.8879
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0886,
                  "after": 0.0651
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1605,
                  "after": 0.1683
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 74.0)",
              "stats": {
                "key_pass": 1.7682,
                "expected_assists": 0.1683,
                "assist_rate": 0.1369,
                "assists": 0,
                "expected_goals": 0.0651,
                "goal_rate": 0.0994,
                "goals": 0,
                "shots_on_target": 0.32,
                "total_shots": 0.9666,
                "rating": 6.9305,
                "minutes": 71.71,
                "total_pass": 30.6707,
                "accurate_pass": 24.9114,
                "duels_won": 3.1055,
                "total_long_balls": 2.6793,
                "accurate_long_balls": 1.0891,
                "total_own_half_passes": 10.8964,
                "accurate_own_half_passes": 9.8482,
                "total_opp_half_passes": 19.7742,
                "accurate_opp_half_passes": 15.0631,
                "crosses_total": 3.7484,
                "crosses_accurate": 1.2264,
                "touches": 44.5832,
                "possession_lost": 11.8563,
                "dispossessed": 0.7016,
                "duels_lost": 4.1192,
                "aerial_won": 0.9,
                "aerial_lost": 0.4376,
                "interceptions": 0.3735,
                "tackles_won": 0.5797,
                "tackles": 0.9527,
                "clearances": 0.518,
                "total_contest": 1.9492,
                "won_contest": 0.8985,
                "challenges_lost": 1.2398,
                "fouls": 0.6974,
                "fouls_drawn": 1.1411,
                "blocks": 0.0447,
                "big_chances_created": 0.0308,
                "big_chances_missed": 0.1337,
                "xgot": 0.0402,
                "ball_carries": 14.5492,
                "total_progression": 63.1174,
                "progressive_carries": 1.1945,
                "shots_off_target": 0.6466,
                "duel_xg_multiplier": 1.0244,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0779,
                "creation_factor": 0.8879,
                "fifa_overall": 74.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": 3706,
                "fifa_rank": 2878.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 1.7682,
                "expected_assists": 0.1683,
                "assist_rate": 0.1369,
                "assists": 0,
                "expected_goals": 0.0651,
                "goal_rate": 0.0994,
                "goals": 0,
                "shots_on_target": 0.32,
                "total_shots": 0.9666,
                "rating": 6.9305,
                "minutes": 71.71,
                "total_pass": 30.6707,
                "accurate_pass": 24.9114,
                "duels_won": 3.1055,
                "total_long_balls": 2.6793,
                "accurate_long_balls": 1.0891,
                "total_own_half_passes": 10.8964,
                "accurate_own_half_passes": 9.8482,
                "total_opp_half_passes": 19.7742,
                "accurate_opp_half_passes": 15.0631,
                "crosses_total": 3.7484,
                "crosses_accurate": 1.2264,
                "touches": 44.5832,
                "possession_lost": 11.8563,
                "dispossessed": 0.7016,
                "duels_lost": 4.1192,
                "aerial_won": 0.9,
                "aerial_lost": 0.4376,
                "interceptions": 0.3735,
                "tackles_won": 0.5797,
                "tackles": 0.9527,
                "clearances": 0.518,
                "total_contest": 1.9492,
                "won_contest": 0.8985,
                "challenges_lost": 1.2398,
                "fouls": 0.6974,
                "fouls_drawn": 1.1411,
                "blocks": 0.0447,
                "big_chances_created": 0.0308,
                "big_chances_missed": 0.1337,
                "xgot": 0.0402,
                "ball_carries": 14.5492,
                "total_progression": 63.1174,
                "progressive_carries": 1.1945,
                "shots_off_target": 0.6466,
                "duel_xg_multiplier": 1.0244,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.063,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0779,
                "creation_factor": 0.8879,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.063,
                "goal_rate": 0.0994,
                "scorer_weight": 0.0702,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0769,
                "finishing_factor": 1.0779,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 1.7682,
                "expected_assists": 0.1683,
                "assist_rate": 0.1369,
                "assists": 0,
                "expected_goals": 0.0651,
                "goal_rate": 0.0994,
                "goals": 0,
                "shots_on_target": 0.32,
                "total_shots": 0.9666,
                "rating": 6.9305,
                "minutes": 71.71,
                "total_pass": 30.6707,
                "accurate_pass": 24.9114,
                "duels_won": 3.1055,
                "total_long_balls": 2.6793,
                "accurate_long_balls": 1.0891,
                "total_own_half_passes": 10.8964,
                "accurate_own_half_passes": 9.8482,
                "total_opp_half_passes": 19.7742,
                "accurate_opp_half_passes": 15.0631,
                "crosses_total": 3.7484,
                "crosses_accurate": 1.2264,
                "touches": 44.5832,
                "possession_lost": 11.8563,
                "dispossessed": 0.7016,
                "duels_lost": 4.1192,
                "aerial_won": 0.9,
                "aerial_lost": 0.4376,
                "interceptions": 0.3735,
                "tackles_won": 0.5797,
                "tackles": 0.9527,
                "clearances": 0.518,
                "total_contest": 1.9492,
                "won_contest": 0.8985,
                "challenges_lost": 1.2398,
                "fouls": 0.6974,
                "fouls_drawn": 1.1411,
                "blocks": 0.0447,
                "big_chances_created": 0.0308,
                "big_chances_missed": 0.1337,
                "xgot": 0.0402,
                "ball_carries": 14.5492,
                "total_progression": 63.1174,
                "progressive_carries": 1.1945,
                "shots_off_target": 0.6466,
                "duel_xg_multiplier": 1.0244,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.437,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Aleix Febas",
                "opponent_faced": "Aleix Febas",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.063,
                "projected_assists": 0,
                "assist_probability": 0.1549,
                "finishing_factor": 1.0779,
                "creation_factor": 0.8879,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.1549,
                "assist_rate": 0.1369,
                "provider_weight": 0.1494,
                "squad_weight_total": 0.5324,
                "weight_share": 0.2807,
                "creation_factor": 0.8879,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12
              }
            }
          ]
        },
        "Lucas Boyé": {
          "player_id": 814385,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 15,
          "height": 183,
          "market_value": 5300000,
          "stats": {
            "expected_goals": 0.2082,
            "goal_rate": 0.277,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0447,
            "key_pass": 1,
            "rating": 6.7264,
            "minutes": 76,
            "total_pass": 14,
            "accurate_pass": 10,
            "duels_won": 6,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 11,
            "accurate_opp_half_passes": 8,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 34,
            "possession_lost": 13.2026,
            "dispossessed": 1.6926,
            "duels_lost": 9,
            "aerial_lost": 3,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 2,
            "assist_rate": 0.008,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2841,
            "offsides": 0,
            "ball_carries": 9,
            "total_progression": 15,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9773,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.185,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
            "opponent_faced": "Yoel Lago, Sebastián Cáceres",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.188,
            "projected_assists": 0,
            "assist_probability": 0.0437,
            "finishing_factor": 0.9811,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 64,
                "rating": 6.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7884,
                "expected_assists": 0.0034,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 8,
                "accurate_pass": 5,
                "clearances": 2,
                "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": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 75,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0054,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 2,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2017,
                "expected_assists": 0.0304,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1505,
                "expected_assists": 0.032,
                "total_shots": 4,
                "shots_off_target": 2,
                "total_pass": 14,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 4,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 85,
                "rating": 10.0,
                "goal_rate": 3.0,
                "goals": 3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2454,
                "expected_assists": 0.0198,
                "total_shots": 3,
                "shots_on_target": 3,
                "total_pass": 24,
                "accurate_pass": 19,
                "tackles": 3,
                "tackles_won": 3,
                "aerial_won": 3,
                "duels_won": 13,
                "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": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 82,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.533,
                "expected_assists": 0.003,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 9,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 1,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 62,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1089,
                "expected_assists": 0.2737,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 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": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 84,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3873,
                "expected_assists": 0.0145,
                "total_shots": 4,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 16,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 1,
                "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": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 8,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 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"
            },
            {
              "match_id": 14083202,
              "match_date": "2026-04-25",
              "home_team": "Deportivo Alavés",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 4,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2629,
            "combined_rank_score": 921.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 292.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1550.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7264,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lucas Boyé",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                },
                {
                  "player_name": "Edu Expósito",
                  "ranking": 2628
                }
              ],
              "lower": [
                {
                  "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
                },
                {
                  "player_name": "Enzo Barrenechea",
                  "ranking": 2634
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.766,
          "history_matches": 36,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 36,
            "data_confidence": 0.766,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9986,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 142.0,
              "goals_per90": 0.625,
              "assists_per90": 0.0,
              "shots_per90": 3.17,
              "shots_on_target_pct": 40.0,
              "prior_reliability": 0.1067
            },
            "rationale": "XGBoost regressor (F_service) evaluated 36 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Alavés, rel: 0.11, gls/90: 0.625, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.2903,
                "goals": 0.2817,
                "goal_rate": 0.2817,
                "shots_on_target": 0.7214,
                "total_shots": 2.1402,
                "expected_assists": 0.0426,
                "key_pass": 0.6494,
                "rating": 6.7264,
                "minutes": 75.8,
                "total_pass": 14.228,
                "accurate_pass": 10.2728,
                "duels_won": 5.9067,
                "total_long_balls": 0.9115,
                "accurate_long_balls": 0.6073,
                "total_opp_half_passes": 11.0348,
                "accurate_opp_half_passes": 7.6006,
                "crosses_total": 0.393,
                "crosses_accurate": 0.1042,
                "touches": 34.4359,
                "possession_lost": 13.2211,
                "dispossessed": 1.695,
                "duels_lost": 9.1556,
                "aerial_lost": 2.6209,
                "total_contest": 2.1084,
                "won_contest": 0.6818,
                "ball_recovery": 2.4591,
                "challenges_lost": 1.1493,
                "fouls": 2.289,
                "fouls_drawn": 1.822,
                "assists": 0.0081,
                "assist_rate": 0.0081,
                "interceptions": 0.0547,
                "tackles_won": 1.1943,
                "tackles": 1.6922,
                "clearances": 0.9983,
                "blocks": 0.1931,
                "big_chances_created": 0.1213,
                "big_chances_missed": 0.0557,
                "xgot": 0.3962,
                "offsides": 0.4932,
                "ball_carries": 9.1449,
                "total_progression": 15.3885,
                "progressive_carries": 0.7316,
                "shots_off_target": 1.4188
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 10.0
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Mallorca",
                    "minutes": 4.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 0.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 10.3319,
                  "expectedGoals": 0.3104,
                  "accurateOppositionHalfPasses": 7.0665,
                  "accuratePass": 9.4699,
                  "totalShots": 2.1082
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.2903476655483246,
                    "model_output": 0.2903,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0605
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0328
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0228
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0197
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.006
                        }
                      ],
                      "others": -0.0096,
                      "total": 0.2903,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.267272
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.119753
                        },
                        {
                          "name": "goals",
                          "margin": 0.075615
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.064871
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.020259
                        }
                      ],
                      "others_margin": -0.032787
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2816828489303589,
                    "model_output": 0.2817,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0529
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0387
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.022
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0211
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0176
                        }
                      ],
                      "others": 0.0052,
                      "total": 0.2817,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.23141
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.14061
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.077347
                        },
                        {
                          "name": "goals",
                          "margin": 0.074342
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.061698
                        }
                      ],
                      "others_margin": 0.018499
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7214028835296631,
                    "model_output": 0.7214,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1586
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0517
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0508
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0493
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0526
                        }
                      ],
                      "others": -0.0776,
                      "total": 0.7214,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.25855
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.071588
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.070305
                        },
                        {
                          "name": "goals",
                          "margin": 0.068299
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.068129
                        }
                      ],
                      "others_margin": -0.10227
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.140172004699707,
                    "model_output": 2.1402,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5014
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1566
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0599
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0367
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0264
                        }
                      ],
                      "others": -0.0146,
                      "total": 2.1402,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.501375
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.15662
                        },
                        {
                          "name": "goals",
                          "margin": 0.05985
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.036747
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.026437
                        }
                      ],
                      "others_margin": -0.014697
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04263251647353172,
                    "model_output": 0.0426,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0148
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0104
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0061
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0046
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0132,
                      "total": 0.0426,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.207755
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.140351
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.093365
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.07657
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.0371
                        }
                      ],
                      "others_margin": -0.269996
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.649352490901947,
                    "model_output": 0.6494,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1887
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0573
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0374
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0298
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0215
                        }
                      ],
                      "others": -0.0667,
                      "total": 0.6494,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.24699
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.068728
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.047606
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.039564
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.029513
                        }
                      ],
                      "others_margin": -0.097897
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.72643518447876,
                    "model_output": 6.7264,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0413
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0246
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0199
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0148
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0132
                        }
                      ],
                      "others": -0.0492,
                      "total": 6.7264,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.041309
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.024649
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.019947
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.014757
                        },
                        {
                          "name": "goals",
                          "margin": -0.013229
                        }
                      ],
                      "others_margin": -0.049187
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 36,
                  "role_matches": 29,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9986, quality 0.466)",
              "stats": {
                "expected_goals": 0.2899,
                "goals": 0.2813,
                "goal_rate": 0.2813,
                "shots_on_target": 0.7204,
                "total_shots": 2.1372,
                "expected_assists": 0.0426,
                "key_pass": 0.6484,
                "rating": 6.7264,
                "minutes": 75.8,
                "total_pass": 14.2081,
                "accurate_pass": 10.2584,
                "duels_won": 5.8984,
                "total_long_balls": 0.9102,
                "accurate_long_balls": 0.6064,
                "total_opp_half_passes": 11.0194,
                "accurate_opp_half_passes": 7.59,
                "crosses_total": 0.3924,
                "crosses_accurate": 0.1041,
                "touches": 34.3877,
                "possession_lost": 13.2026,
                "dispossessed": 1.6926,
                "duels_lost": 9.1428,
                "aerial_lost": 2.6172,
                "total_contest": 2.1054,
                "won_contest": 0.6808,
                "ball_recovery": 2.4557,
                "challenges_lost": 1.1477,
                "fouls": 2.2858,
                "fouls_drawn": 1.8194,
                "assists": 0.0081,
                "assist_rate": 0.0081,
                "interceptions": 0.0546,
                "tackles_won": 1.1926,
                "tackles": 1.6898,
                "clearances": 0.9969,
                "blocks": 0.1928,
                "big_chances_created": 0.1211,
                "big_chances_missed": 0.0556,
                "xgot": 0.3956,
                "offsides": 0.4925,
                "ball_carries": 9.1321,
                "total_progression": 15.367,
                "progressive_carries": 0.7306,
                "shots_off_target": 1.4168
              },
              "params": {
                "market_value_eur": 5300000,
                "quality_factor": 0.4659,
                "boost_factor": 0.9986,
                "reference_quality": 0.505,
                "history_matches": 36,
                "history_shrink": 0.122,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0085)",
              "stats": {
                "expected_goals": 0.2899,
                "goals": 0.2834,
                "goal_rate": 0.2834,
                "shots_on_target": 0.7234,
                "total_shots": 2.1417,
                "expected_assists": 0.0426,
                "key_pass": 0.6484,
                "rating": 6.7264,
                "minutes": 75.8,
                "total_pass": 14.2081,
                "accurate_pass": 10.2584,
                "duels_won": 5.8984,
                "total_long_balls": 0.9102,
                "accurate_long_balls": 0.6064,
                "total_opp_half_passes": 11.0194,
                "accurate_opp_half_passes": 7.59,
                "crosses_total": 0.3891,
                "crosses_accurate": 0.1041,
                "touches": 34.3877,
                "possession_lost": 13.2026,
                "dispossessed": 1.6926,
                "duels_lost": 9.1428,
                "aerial_lost": 2.6172,
                "total_contest": 2.1054,
                "won_contest": 0.6808,
                "ball_recovery": 2.4557,
                "challenges_lost": 1.1477,
                "fouls": 2.2887,
                "fouls_drawn": 1.8129,
                "assists": 0.008,
                "assist_rate": 0.008,
                "interceptions": 0.0541,
                "tackles_won": 1.2048,
                "tackles": 1.6898,
                "clearances": 0.9969,
                "blocks": 0.1928,
                "big_chances_created": 0.1211,
                "big_chances_missed": 0.0556,
                "xgot": 0.3956,
                "offsides": 0.4883,
                "ball_carries": 9.1321,
                "total_progression": 15.367,
                "progressive_carries": 0.7306,
                "shots_off_target": 1.4168
              },
              "params": {
                "blend_weight": 0.0085,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8422,
                "prior_reliability": 0.1067,
                "competition": "La Liga",
                "squad": "Alavés"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.1926,
                  "after": 1.2048
                },
                {
                  "stat": "wasFouled",
                  "before": 1.8194,
                  "after": 1.8129
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2899,
                "goals": 0.2834,
                "goal_rate": 0.2834,
                "shots_on_target": 0.7234,
                "total_shots": 2.1417,
                "expected_assists": 0.0426,
                "key_pass": 0.6484,
                "rating": 6.7264,
                "minutes": 75.8,
                "total_pass": 14.2081,
                "accurate_pass": 10.2584,
                "duels_won": 5.8984,
                "total_long_balls": 0.9102,
                "accurate_long_balls": 0.6064,
                "total_opp_half_passes": 11.0194,
                "accurate_opp_half_passes": 7.59,
                "crosses_total": 0.3891,
                "crosses_accurate": 0.1041,
                "touches": 34.3877,
                "possession_lost": 13.2026,
                "dispossessed": 1.6926,
                "duels_lost": 9.1428,
                "aerial_lost": 2.6172,
                "total_contest": 2.1054,
                "won_contest": 0.6808,
                "ball_recovery": 2.4557,
                "challenges_lost": 1.1477,
                "fouls": 2.2887,
                "fouls_drawn": 1.8129,
                "assists": 0.008,
                "assist_rate": 0.008,
                "interceptions": 0.0541,
                "tackles_won": 1.2048,
                "tackles": 1.6898,
                "clearances": 0.9969,
                "blocks": 0.1928,
                "big_chances_created": 0.1211,
                "big_chances_missed": 0.0556,
                "xgot": 0.3956,
                "offsides": 0.4883,
                "ball_carries": 9.1321,
                "total_progression": 15.367,
                "progressive_carries": 0.7306,
                "shots_off_target": 1.4168
              },
              "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.2833,
                "goals": 0.277,
                "goal_rate": 0.277,
                "shots_on_target": 0.707,
                "total_shots": 2.0931,
                "expected_assists": 0.0426,
                "key_pass": 0.6484,
                "rating": 6.7264,
                "minutes": 75.8,
                "total_pass": 14.2081,
                "accurate_pass": 10.2584,
                "duels_won": 5.8984,
                "total_long_balls": 0.9102,
                "accurate_long_balls": 0.6064,
                "total_opp_half_passes": 11.0194,
                "accurate_opp_half_passes": 7.59,
                "crosses_total": 0.3891,
                "crosses_accurate": 0.1041,
                "touches": 34.3877,
                "possession_lost": 13.2026,
                "dispossessed": 1.6926,
                "duels_lost": 9.1428,
                "aerial_lost": 2.6172,
                "total_contest": 2.1054,
                "won_contest": 0.6808,
                "ball_recovery": 2.4557,
                "challenges_lost": 1.1477,
                "fouls": 2.2887,
                "fouls_drawn": 1.8129,
                "assists": 0.008,
                "assist_rate": 0.008,
                "interceptions": 0.0541,
                "tackles_won": 1.2048,
                "tackles": 1.6898,
                "clearances": 0.9969,
                "blocks": 0.1928,
                "big_chances_created": 0.1211,
                "big_chances_missed": 0.0543,
                "xgot": 0.3866,
                "offsides": 0.4883,
                "ball_carries": 9.1321,
                "total_progression": 15.367,
                "progressive_carries": 0.7306,
                "shots_off_target": 1.3846,
                "duel_xg_multiplier": 0.9773,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.185,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.185,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.9773,
                  "skill_edge": -0.0114,
                  "height_edge": -0.004,
                  "attacker_skill": 0.4659,
                  "defender_skill": 0.4913,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Yoel Lago",
                      "market_value": 7000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5146
                    },
                    {
                      "player": "Sebastián Cáceres",
                      "market_value": 4099999,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4679
                    }
                  ],
                  "xg_override": 0.2833
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.1417,
                  "after": 2.0931
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.4168,
                  "after": 1.3846
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7234,
                  "after": 0.707
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.3956,
                  "after": 0.3866
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2899,
                  "after": 0.2833
                },
                {
                  "stat": "goals",
                  "before": 0.2834,
                  "after": 0.277
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.2833,
                "goal_rate": 0.277,
                "goals": 0,
                "shots_on_target": 0.707,
                "total_shots": 2.0931,
                "expected_assists": 0.0426,
                "key_pass": 0.6484,
                "rating": 6.7264,
                "minutes": 75.8,
                "total_pass": 14.2081,
                "accurate_pass": 10.2584,
                "duels_won": 5.8984,
                "total_long_balls": 0.9102,
                "accurate_long_balls": 0.6064,
                "total_opp_half_passes": 11.0194,
                "accurate_opp_half_passes": 7.59,
                "crosses_total": 0.3891,
                "crosses_accurate": 0.1041,
                "touches": 34.3877,
                "possession_lost": 13.2026,
                "dispossessed": 1.6926,
                "duels_lost": 9.1428,
                "aerial_lost": 2.6172,
                "total_contest": 2.1054,
                "won_contest": 0.6808,
                "ball_recovery": 2.4557,
                "challenges_lost": 1.1477,
                "fouls": 2.2887,
                "fouls_drawn": 1.8129,
                "assist_rate": 0.008,
                "assists": 0,
                "interceptions": 0.0541,
                "tackles_won": 1.2048,
                "tackles": 1.6898,
                "clearances": 0.9969,
                "blocks": 0.1928,
                "big_chances_created": 0.1211,
                "big_chances_missed": 0.0543,
                "xgot": 0.3866,
                "offsides": 0.4883,
                "ball_carries": 9.1321,
                "total_progression": 15.367,
                "progressive_carries": 0.7306,
                "shots_off_target": 1.3846,
                "duel_xg_multiplier": 0.9773,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.185,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.2082,
                "goal_rate": 0.277,
                "goals": 0,
                "shots_on_target": 0.707,
                "total_shots": 2.0931,
                "expected_assists": 0.0447,
                "key_pass": 0.6484,
                "rating": 6.7264,
                "minutes": 75.8,
                "total_pass": 14.2081,
                "accurate_pass": 10.2584,
                "duels_won": 5.8984,
                "total_long_balls": 0.9102,
                "accurate_long_balls": 0.6064,
                "total_opp_half_passes": 11.0194,
                "accurate_opp_half_passes": 7.59,
                "crosses_total": 0.3891,
                "crosses_accurate": 0.1041,
                "touches": 34.3877,
                "possession_lost": 13.2026,
                "dispossessed": 1.6926,
                "duels_lost": 9.1428,
                "aerial_lost": 2.6172,
                "total_contest": 2.1054,
                "won_contest": 0.6808,
                "ball_recovery": 2.4557,
                "challenges_lost": 1.1477,
                "fouls": 2.2887,
                "fouls_drawn": 1.8129,
                "assist_rate": 0.008,
                "assists": 0,
                "interceptions": 0.0541,
                "tackles_won": 1.2048,
                "tackles": 1.6898,
                "clearances": 0.9969,
                "blocks": 0.1928,
                "big_chances_created": 0.1211,
                "big_chances_missed": 0.0543,
                "xgot": 0.2841,
                "offsides": 0.4883,
                "ball_carries": 9.1321,
                "total_progression": 15.367,
                "progressive_carries": 0.7306,
                "shots_off_target": 1.3846,
                "duel_xg_multiplier": 0.9773,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.185,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9811,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2833,
                  "after": 0.2082
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.2082,
                "goal_rate": 0.277,
                "goals": 0,
                "shots_on_target": 0.707,
                "total_shots": 2.0931,
                "expected_assists": 0.0447,
                "key_pass": 0.6484,
                "rating": 6.7264,
                "minutes": 75.8,
                "total_pass": 14.2081,
                "accurate_pass": 10.2584,
                "duels_won": 5.8984,
                "total_long_balls": 0.9102,
                "accurate_long_balls": 0.6064,
                "total_opp_half_passes": 11.0194,
                "accurate_opp_half_passes": 7.59,
                "crosses_total": 0.3891,
                "crosses_accurate": 0.1041,
                "touches": 34.3877,
                "possession_lost": 13.2026,
                "dispossessed": 1.6926,
                "duels_lost": 9.1428,
                "aerial_lost": 2.6172,
                "total_contest": 2.1054,
                "won_contest": 0.6808,
                "ball_recovery": 2.4557,
                "challenges_lost": 1.1477,
                "fouls": 2.2887,
                "fouls_drawn": 1.8129,
                "assist_rate": 0.008,
                "assists": 0,
                "interceptions": 0.0541,
                "tackles_won": 1.2048,
                "tackles": 1.6898,
                "clearances": 0.9969,
                "blocks": 0.1928,
                "big_chances_created": 0.1211,
                "big_chances_missed": 0.0543,
                "xgot": 0.2841,
                "offsides": 0.4883,
                "ball_carries": 9.1321,
                "total_progression": 15.367,
                "progressive_carries": 0.7306,
                "shots_off_target": 1.3846,
                "duel_xg_multiplier": 0.9773,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.185,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9811,
                "creation_factor": 0.8,
                "fifa_overall": 77.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": 2629,
                "fifa_rank": 1550.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.2082,
                "goal_rate": 0.277,
                "goals": 0,
                "shots_on_target": 0.707,
                "total_shots": 2.0931,
                "expected_assists": 0.0447,
                "key_pass": 0.6484,
                "rating": 6.7264,
                "minutes": 75.8,
                "total_pass": 14.2081,
                "accurate_pass": 10.2584,
                "duels_won": 5.8984,
                "total_long_balls": 0.9102,
                "accurate_long_balls": 0.6064,
                "total_opp_half_passes": 11.0194,
                "accurate_opp_half_passes": 7.59,
                "crosses_total": 0.3891,
                "crosses_accurate": 0.1041,
                "touches": 34.3877,
                "possession_lost": 13.2026,
                "dispossessed": 1.6926,
                "duels_lost": 9.1428,
                "aerial_lost": 2.6172,
                "total_contest": 2.1054,
                "won_contest": 0.6808,
                "ball_recovery": 2.4557,
                "challenges_lost": 1.1477,
                "fouls": 2.2887,
                "fouls_drawn": 1.8129,
                "assist_rate": 0.008,
                "assists": 0,
                "interceptions": 0.0541,
                "tackles_won": 1.2048,
                "tackles": 1.6898,
                "clearances": 0.9969,
                "blocks": 0.1928,
                "big_chances_created": 0.1211,
                "big_chances_missed": 0.0543,
                "xgot": 0.2841,
                "offsides": 0.4883,
                "ball_carries": 9.1321,
                "total_progression": 15.367,
                "progressive_carries": 0.7306,
                "shots_off_target": 1.3846,
                "duel_xg_multiplier": 0.9773,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.185,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.188,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9811,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.188,
                "goal_rate": 0.277,
                "scorer_weight": 0.2043,
                "squad_weight_total": 0.9123,
                "weight_share": 0.2239,
                "finishing_factor": 0.9811,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.2082,
                "goal_rate": 0.277,
                "goals": 0,
                "shots_on_target": 0.707,
                "total_shots": 2.0931,
                "expected_assists": 0.0447,
                "key_pass": 0.6484,
                "rating": 6.7264,
                "minutes": 75.8,
                "total_pass": 14.2081,
                "accurate_pass": 10.2584,
                "duels_won": 5.8984,
                "total_long_balls": 0.9102,
                "accurate_long_balls": 0.6064,
                "total_opp_half_passes": 11.0194,
                "accurate_opp_half_passes": 7.59,
                "crosses_total": 0.3891,
                "crosses_accurate": 0.1041,
                "touches": 34.3877,
                "possession_lost": 13.2026,
                "dispossessed": 1.6926,
                "duels_lost": 9.1428,
                "aerial_lost": 2.6172,
                "total_contest": 2.1054,
                "won_contest": 0.6808,
                "ball_recovery": 2.4557,
                "challenges_lost": 1.1477,
                "fouls": 2.2887,
                "fouls_drawn": 1.8129,
                "assist_rate": 0.008,
                "assists": 0,
                "interceptions": 0.0541,
                "tackles_won": 1.2048,
                "tackles": 1.6898,
                "clearances": 0.9969,
                "blocks": 0.1928,
                "big_chances_created": 0.1211,
                "big_chances_missed": 0.0543,
                "xgot": 0.2841,
                "offsides": 0.4883,
                "ball_carries": 9.1321,
                "total_progression": 15.367,
                "progressive_carries": 0.7306,
                "shots_off_target": 1.3846,
                "duel_xg_multiplier": 0.9773,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.185,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.188,
                "projected_assists": 0,
                "assist_probability": 0.0437,
                "finishing_factor": 0.9811,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0437,
                "assist_rate": 0.008,
                "provider_weight": 0.0358,
                "squad_weight_total": 0.5324,
                "weight_share": 0.0672,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12
              }
            }
          ]
        },
        "Toni Martínez": {
          "player_id": 831253,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 11,
          "height": 180,
          "market_value": 7300000,
          "stats": {
            "expected_goals": 0.2426,
            "goal_rate": 0.3802,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0348,
            "key_pass": 1,
            "rating": 6.8207,
            "minutes": 77,
            "total_pass": 14,
            "accurate_pass": 8,
            "duels_won": 7,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 11,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 25,
            "possession_lost": 9.6969,
            "dispossessed": 0.8141,
            "duels_lost": 6,
            "aerial_lost": 3,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "assist_rate": 0.0209,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1916,
            "offsides": 0,
            "ball_carries": 5,
            "total_progression": 11,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9758,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.184,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
            "opponent_faced": "Yoel Lago, Sebastián Cáceres",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.2154,
            "projected_assists": 0,
            "assist_probability": 0.0342,
            "finishing_factor": 1.1321,
            "creation_factor": 0.8522,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 64,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0119,
                "expected_assists": 0.004,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 4,
                "key_pass": 1,
                "aerial_won": 5,
                "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": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 25,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 2,
                "clearances": 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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 67,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1819,
                "expected_assists": 0.0095,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 11,
                "accurate_pass": 7,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 4,
                "duels_won": 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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 23,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0527,
                "expected_assists": 0.1076,
                "total_shots": 1,
                "total_pass": 3,
                "accurate_pass": 1,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 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"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 54,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.3729,
                "expected_assists": 0.0107,
                "total_shots": 4,
                "shots_off_target": 4,
                "total_pass": 12,
                "accurate_pass": 9,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 5,
                "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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3202,
                "expected_assists": 0.012,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 3,
                "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": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5449,
                "expected_assists": 0.0071,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 14,
                "accurate_pass": 7,
                "tackles": 1,
                "tackles_won": 1,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 82,
                "rating": 6.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.8192,
                "expected_assists": 0.0218,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 14,
                "accurate_pass": 8,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083603,
              "match_date": "2026-05-13",
              "home_team": "Deportivo Alavés",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.129,
                "expected_assists": 0.0061,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 26,
                "accurate_pass": 10,
                "tackles": 1,
                "aerial_won": 12,
                "duels_won": 13,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 2078,
            "combined_rank_score": 790.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 345.0,
            "sofascore_rating": 6.9892,
            "sofascore_appearances": 37.0,
            "fifa_rank": 1236.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": 6.8207,
            "source_file": "data/player_rankings.csv",
            "player_name": "Toni Martínez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luiz Júnior",
                  "ranking": 2073
                },
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Callum Hudson Odoi",
                  "ranking": 2079
                },
                {
                  "player_name": "Cédric Bakambu",
                  "ranking": 2080
                },
                {
                  "player_name": "Renato Veiga",
                  "ranking": 2081
                },
                {
                  "player_name": "Shodiyor Shodiboev",
                  "ranking": 2082
                },
                {
                  "player_name": "Matija Rom",
                  "ranking": 2083
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.776,
          "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.776,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9995,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 233.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 2.7,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1733
            },
            "rationale": "XGBoost regressor (F_service) evaluated 44 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Alavés, rel: 0.17, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3384,
                "goals": 0.3943,
                "goal_rate": 0.3943,
                "shots_on_target": 0.8657,
                "total_shots": 2.3304,
                "expected_assists": 0.0332,
                "key_pass": 0.6338,
                "rating": 6.8207,
                "minutes": 76.83,
                "total_pass": 14.0701,
                "accurate_pass": 8.1828,
                "duels_won": 6.7671,
                "total_long_balls": 0.5594,
                "accurate_long_balls": 0.3205,
                "total_opp_half_passes": 10.959,
                "accurate_opp_half_passes": 6.0003,
                "crosses_total": 0.1834,
                "crosses_accurate": 0.0571,
                "touches": 25.1993,
                "possession_lost": 9.7018,
                "dispossessed": 0.8145,
                "duels_lost": 6.4048,
                "aerial_lost": 3.4506,
                "total_contest": 0.9782,
                "won_contest": 0.1095,
                "ball_recovery": 1.4741,
                "challenges_lost": 0.4567,
                "fouls": 0.8935,
                "fouls_drawn": 1.5967,
                "assists": 0.0211,
                "assist_rate": 0.0211,
                "interceptions": 0.0059,
                "tackles_won": 0.4926,
                "tackles": 0.6106,
                "clearances": 1.0146,
                "blocks": 0.1314,
                "big_chances_created": 0.2486,
                "big_chances_missed": 0.3883,
                "xgot": 0.2674,
                "offsides": 0.4143,
                "ball_carries": 5.4516,
                "total_progression": 11.2666,
                "progressive_carries": 0.651,
                "shots_off_target": 1.4647
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.1276,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0922,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 54.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 9.3444,
                  "expectedGoals": 0.2828,
                  "accurateOppositionHalfPasses": 4.8077,
                  "accuratePass": 6.5178,
                  "totalShots": 1.8898
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.33841025829315186,
                    "model_output": 0.3384,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0662
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0278
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0114
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0101
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0081
                        }
                      ],
                      "others": 0.0173,
                      "total": 0.3384,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.289119
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.100092
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.038464
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.032928
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.025588
                        }
                      ],
                      "others_margin": 0.052231
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.3943139612674713,
                    "model_output": 0.3943,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0621
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0442
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0277
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0174
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0156
                        }
                      ],
                      "others": 0.0239,
                      "total": 0.3943,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.266474
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.154074
                        },
                        {
                          "name": "goals",
                          "margin": 0.085779
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.0504
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.042889
                        }
                      ],
                      "others_margin": 0.062566
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.8657456040382385,
                    "model_output": 0.8657,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1681
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0609
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0436
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0342
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.02
                        }
                      ],
                      "others": 0.0413,
                      "total": 0.8657,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.272106
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.082718
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.055355
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.041295
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": -0.024023
                        }
                      ],
                      "others_margin": 0.048933
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.330416679382324,
                    "model_output": 2.3304,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5681
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1044
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0836
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0451
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0384
                        }
                      ],
                      "others": 0.117,
                      "total": 2.3304,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.568126
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.104353
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.08358
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.045098
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.038405
                        }
                      ],
                      "others_margin": 0.117015
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03321457281708717,
                    "model_output": 0.0332,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0189
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0138
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0106
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0066
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.0159,
                      "total": 0.0332,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.257539
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.180955
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.165168
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.118431
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.05969
                        }
                      ],
                      "others_margin": -0.392552
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.6337531805038452,
                    "model_output": 0.6338,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1912
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0594
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0517
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0405
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0322
                        }
                      ],
                      "others": -0.047,
                      "total": 0.6338,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.249995
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.071142
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.066408
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.055222
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.046271
                        }
                      ],
                      "others_margin": -0.071586
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.8206868171691895,
                    "model_output": 6.8207,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0527
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0237
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0151
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0131
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0106
                        }
                      ],
                      "others": 0.0071,
                      "total": 6.8207,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.052654
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.023739
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.015057
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.013068
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.010565
                        }
                      ],
                      "others_margin": 0.007209
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 44,
                  "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 0.9995, quality 0.490)",
              "stats": {
                "expected_goals": 0.3382,
                "goals": 0.3941,
                "goal_rate": 0.3941,
                "shots_on_target": 0.8653,
                "total_shots": 2.3293,
                "expected_assists": 0.0332,
                "key_pass": 0.6334,
                "rating": 6.8207,
                "minutes": 76.83,
                "total_pass": 14.0631,
                "accurate_pass": 8.1787,
                "duels_won": 6.7637,
                "total_long_balls": 0.5591,
                "accurate_long_balls": 0.3203,
                "total_opp_half_passes": 10.9535,
                "accurate_opp_half_passes": 5.9973,
                "crosses_total": 0.1833,
                "crosses_accurate": 0.0571,
                "touches": 25.1867,
                "possession_lost": 9.6969,
                "dispossessed": 0.8141,
                "duels_lost": 6.4016,
                "aerial_lost": 3.4489,
                "total_contest": 0.9777,
                "won_contest": 0.1094,
                "ball_recovery": 1.4734,
                "challenges_lost": 0.4565,
                "fouls": 0.8931,
                "fouls_drawn": 1.5959,
                "assists": 0.0211,
                "assist_rate": 0.0211,
                "interceptions": 0.0059,
                "tackles_won": 0.4924,
                "tackles": 0.6103,
                "clearances": 1.0141,
                "blocks": 0.1313,
                "big_chances_created": 0.2485,
                "big_chances_missed": 0.3881,
                "xgot": 0.2673,
                "offsides": 0.4141,
                "ball_carries": 5.4489,
                "total_progression": 11.261,
                "progressive_carries": 0.6507,
                "shots_off_target": 1.464
              },
              "params": {
                "market_value_eur": 7300000,
                "quality_factor": 0.4903,
                "boost_factor": 0.9995,
                "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.0115)",
              "stats": {
                "expected_goals": 0.3382,
                "goals": 0.3896,
                "goal_rate": 0.3896,
                "shots_on_target": 0.8554,
                "total_shots": 2.329,
                "expected_assists": 0.0332,
                "key_pass": 0.6334,
                "rating": 6.8207,
                "minutes": 76.83,
                "total_pass": 14.0631,
                "accurate_pass": 8.1787,
                "duels_won": 6.7637,
                "total_long_balls": 0.5591,
                "accurate_long_balls": 0.3203,
                "total_opp_half_passes": 10.9535,
                "accurate_opp_half_passes": 5.9973,
                "crosses_total": 0.1812,
                "crosses_accurate": 0.0571,
                "touches": 25.1867,
                "possession_lost": 9.6969,
                "dispossessed": 0.8141,
                "duels_lost": 6.4016,
                "aerial_lost": 3.4489,
                "total_contest": 0.9777,
                "won_contest": 0.1094,
                "ball_recovery": 1.4734,
                "challenges_lost": 0.4565,
                "fouls": 0.8904,
                "fouls_drawn": 1.5964,
                "assists": 0.0209,
                "assist_rate": 0.0209,
                "interceptions": 0.0058,
                "tackles_won": 0.4943,
                "tackles": 0.6103,
                "clearances": 1.0141,
                "blocks": 0.1313,
                "big_chances_created": 0.2485,
                "big_chances_missed": 0.3881,
                "xgot": 0.2673,
                "offsides": 0.4093,
                "ball_carries": 5.4489,
                "total_progression": 11.261,
                "progressive_carries": 0.6507,
                "shots_off_target": 1.464
              },
              "params": {
                "blend_weight": 0.0115,
                "history_matches": 44,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8537,
                "prior_reliability": 0.1733,
                "competition": "La Liga",
                "squad": "Alavés"
              },
              "changes": [
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.8653,
                  "after": 0.8554
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3382,
                "goals": 0.3896,
                "goal_rate": 0.3896,
                "shots_on_target": 0.8554,
                "total_shots": 2.329,
                "expected_assists": 0.0332,
                "key_pass": 0.6334,
                "rating": 6.8207,
                "minutes": 76.83,
                "total_pass": 14.0631,
                "accurate_pass": 8.1787,
                "duels_won": 6.7637,
                "total_long_balls": 0.5591,
                "accurate_long_balls": 0.3203,
                "total_opp_half_passes": 10.9535,
                "accurate_opp_half_passes": 5.9973,
                "crosses_total": 0.1812,
                "crosses_accurate": 0.0571,
                "touches": 25.1867,
                "possession_lost": 9.6969,
                "dispossessed": 0.8141,
                "duels_lost": 6.4016,
                "aerial_lost": 3.4489,
                "total_contest": 0.9777,
                "won_contest": 0.1094,
                "ball_recovery": 1.4734,
                "challenges_lost": 0.4565,
                "fouls": 0.8904,
                "fouls_drawn": 1.5964,
                "assists": 0.0209,
                "assist_rate": 0.0209,
                "interceptions": 0.0058,
                "tackles_won": 0.4943,
                "tackles": 0.6103,
                "clearances": 1.0141,
                "blocks": 0.1313,
                "big_chances_created": 0.2485,
                "big_chances_missed": 0.3881,
                "xgot": 0.2673,
                "offsides": 0.4093,
                "ball_carries": 5.4489,
                "total_progression": 11.261,
                "progressive_carries": 0.6507,
                "shots_off_target": 1.464
              },
              "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.33,
                "goals": 0.3802,
                "goal_rate": 0.3802,
                "shots_on_target": 0.8347,
                "total_shots": 2.2726,
                "expected_assists": 0.0332,
                "key_pass": 0.6334,
                "rating": 6.8207,
                "minutes": 76.83,
                "total_pass": 14.0631,
                "accurate_pass": 8.1787,
                "duels_won": 6.7637,
                "total_long_balls": 0.5591,
                "accurate_long_balls": 0.3203,
                "total_opp_half_passes": 10.9535,
                "accurate_opp_half_passes": 5.9973,
                "crosses_total": 0.1812,
                "crosses_accurate": 0.0571,
                "touches": 25.1867,
                "possession_lost": 9.6969,
                "dispossessed": 0.8141,
                "duels_lost": 6.4016,
                "aerial_lost": 3.4489,
                "total_contest": 0.9777,
                "won_contest": 0.1094,
                "ball_recovery": 1.4734,
                "challenges_lost": 0.4565,
                "fouls": 0.8904,
                "fouls_drawn": 1.5964,
                "assists": 0.0209,
                "assist_rate": 0.0209,
                "interceptions": 0.0058,
                "tackles_won": 0.4943,
                "tackles": 0.6103,
                "clearances": 1.0141,
                "blocks": 0.1313,
                "big_chances_created": 0.2485,
                "big_chances_missed": 0.3787,
                "xgot": 0.2608,
                "offsides": 0.4093,
                "ball_carries": 5.4489,
                "total_progression": 11.261,
                "progressive_carries": 0.6507,
                "shots_off_target": 1.4286,
                "duel_xg_multiplier": 0.9758,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.184,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.184,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.9758,
                  "skill_edge": -0.0005,
                  "height_edge": -0.016,
                  "attacker_skill": 0.4903,
                  "defender_skill": 0.4913,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Yoel Lago",
                      "market_value": 7000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5146
                    },
                    {
                      "player": "Sebastián Cáceres",
                      "market_value": 4099999,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4679
                    }
                  ],
                  "xg_override": 0.33
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.329,
                  "after": 2.2726
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.464,
                  "after": 1.4286
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.8554,
                  "after": 0.8347
                },
                {
                  "stat": "goals",
                  "before": 0.3896,
                  "after": 0.3802
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.3881,
                  "after": 0.3787
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3382,
                  "after": 0.33
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.2673,
                  "after": 0.2608
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.33,
                "goal_rate": 0.3802,
                "goals": 0,
                "shots_on_target": 0.8347,
                "total_shots": 2.2726,
                "expected_assists": 0.0332,
                "key_pass": 0.6334,
                "rating": 6.8207,
                "minutes": 76.83,
                "total_pass": 14.0631,
                "accurate_pass": 8.1787,
                "duels_won": 6.7637,
                "total_long_balls": 0.5591,
                "accurate_long_balls": 0.3203,
                "total_opp_half_passes": 10.9535,
                "accurate_opp_half_passes": 5.9973,
                "crosses_total": 0.1812,
                "crosses_accurate": 0.0571,
                "touches": 25.1867,
                "possession_lost": 9.6969,
                "dispossessed": 0.8141,
                "duels_lost": 6.4016,
                "aerial_lost": 3.4489,
                "total_contest": 0.9777,
                "won_contest": 0.1094,
                "ball_recovery": 1.4734,
                "challenges_lost": 0.4565,
                "fouls": 0.8904,
                "fouls_drawn": 1.5964,
                "assist_rate": 0.0209,
                "assists": 0,
                "interceptions": 0.0058,
                "tackles_won": 0.4943,
                "tackles": 0.6103,
                "clearances": 1.0141,
                "blocks": 0.1313,
                "big_chances_created": 0.2485,
                "big_chances_missed": 0.3787,
                "xgot": 0.2608,
                "offsides": 0.4093,
                "ball_carries": 5.4489,
                "total_progression": 11.261,
                "progressive_carries": 0.6507,
                "shots_off_target": 1.4286,
                "duel_xg_multiplier": 0.9758,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.184,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.2426,
                "goal_rate": 0.3802,
                "goals": 0,
                "shots_on_target": 0.8347,
                "total_shots": 2.2726,
                "expected_assists": 0.0348,
                "key_pass": 0.6334,
                "rating": 6.8207,
                "minutes": 76.83,
                "total_pass": 14.0631,
                "accurate_pass": 8.1787,
                "duels_won": 6.7637,
                "total_long_balls": 0.5591,
                "accurate_long_balls": 0.3203,
                "total_opp_half_passes": 10.9535,
                "accurate_opp_half_passes": 5.9973,
                "crosses_total": 0.1812,
                "crosses_accurate": 0.0571,
                "touches": 25.1867,
                "possession_lost": 9.6969,
                "dispossessed": 0.8141,
                "duels_lost": 6.4016,
                "aerial_lost": 3.4489,
                "total_contest": 0.9777,
                "won_contest": 0.1094,
                "ball_recovery": 1.4734,
                "challenges_lost": 0.4565,
                "fouls": 0.8904,
                "fouls_drawn": 1.5964,
                "assist_rate": 0.0209,
                "assists": 0,
                "interceptions": 0.0058,
                "tackles_won": 0.4943,
                "tackles": 0.6103,
                "clearances": 1.0141,
                "blocks": 0.1313,
                "big_chances_created": 0.2485,
                "big_chances_missed": 0.3787,
                "xgot": 0.1916,
                "offsides": 0.4093,
                "ball_carries": 5.4489,
                "total_progression": 11.261,
                "progressive_carries": 0.6507,
                "shots_off_target": 1.4286,
                "duel_xg_multiplier": 0.9758,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.184,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1321,
                "creation_factor": 0.8522
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.33,
                  "after": 0.2426
                }
              ]
            },
            {
              "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": {
                "expected_goals": 0.2426,
                "goal_rate": 0.3802,
                "goals": 0,
                "shots_on_target": 0.8347,
                "total_shots": 2.2726,
                "expected_assists": 0.0348,
                "key_pass": 0.6334,
                "rating": 6.8207,
                "minutes": 76.83,
                "total_pass": 14.0631,
                "accurate_pass": 8.1787,
                "duels_won": 6.7637,
                "total_long_balls": 0.5591,
                "accurate_long_balls": 0.3203,
                "total_opp_half_passes": 10.9535,
                "accurate_opp_half_passes": 5.9973,
                "crosses_total": 0.1812,
                "crosses_accurate": 0.0571,
                "touches": 25.1867,
                "possession_lost": 9.6969,
                "dispossessed": 0.8141,
                "duels_lost": 6.4016,
                "aerial_lost": 3.4489,
                "total_contest": 0.9777,
                "won_contest": 0.1094,
                "ball_recovery": 1.4734,
                "challenges_lost": 0.4565,
                "fouls": 0.8904,
                "fouls_drawn": 1.5964,
                "assist_rate": 0.0209,
                "assists": 0,
                "interceptions": 0.0058,
                "tackles_won": 0.4943,
                "tackles": 0.6103,
                "clearances": 1.0141,
                "blocks": 0.1313,
                "big_chances_created": 0.2485,
                "big_chances_missed": 0.3787,
                "xgot": 0.1916,
                "offsides": 0.4093,
                "ball_carries": 5.4489,
                "total_progression": 11.261,
                "progressive_carries": 0.6507,
                "shots_off_target": 1.4286,
                "duel_xg_multiplier": 0.9758,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.184,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1321,
                "creation_factor": 0.8522,
                "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": 2078,
                "fifa_rank": 1236.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.2426,
                "goal_rate": 0.3802,
                "goals": 0,
                "shots_on_target": 0.8347,
                "total_shots": 2.2726,
                "expected_assists": 0.0348,
                "key_pass": 0.6334,
                "rating": 6.8207,
                "minutes": 76.83,
                "total_pass": 14.0631,
                "accurate_pass": 8.1787,
                "duels_won": 6.7637,
                "total_long_balls": 0.5591,
                "accurate_long_balls": 0.3203,
                "total_opp_half_passes": 10.9535,
                "accurate_opp_half_passes": 5.9973,
                "crosses_total": 0.1812,
                "crosses_accurate": 0.0571,
                "touches": 25.1867,
                "possession_lost": 9.6969,
                "dispossessed": 0.8141,
                "duels_lost": 6.4016,
                "aerial_lost": 3.4489,
                "total_contest": 0.9777,
                "won_contest": 0.1094,
                "ball_recovery": 1.4734,
                "challenges_lost": 0.4565,
                "fouls": 0.8904,
                "fouls_drawn": 1.5964,
                "assist_rate": 0.0209,
                "assists": 0,
                "interceptions": 0.0058,
                "tackles_won": 0.4943,
                "tackles": 0.6103,
                "clearances": 1.0141,
                "blocks": 0.1313,
                "big_chances_created": 0.2485,
                "big_chances_missed": 0.3787,
                "xgot": 0.1916,
                "offsides": 0.4093,
                "ball_carries": 5.4489,
                "total_progression": 11.261,
                "progressive_carries": 0.6507,
                "shots_off_target": 1.4286,
                "duel_xg_multiplier": 0.9758,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.184,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2154,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1321,
                "creation_factor": 0.8522,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.2154,
                "goal_rate": 0.3802,
                "scorer_weight": 0.2746,
                "squad_weight_total": 0.9123,
                "weight_share": 0.301,
                "finishing_factor": 1.1321,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.2426,
                "goal_rate": 0.3802,
                "goals": 0,
                "shots_on_target": 0.8347,
                "total_shots": 2.2726,
                "expected_assists": 0.0348,
                "key_pass": 0.6334,
                "rating": 6.8207,
                "minutes": 76.83,
                "total_pass": 14.0631,
                "accurate_pass": 8.1787,
                "duels_won": 6.7637,
                "total_long_balls": 0.5591,
                "accurate_long_balls": 0.3203,
                "total_opp_half_passes": 10.9535,
                "accurate_opp_half_passes": 5.9973,
                "crosses_total": 0.1812,
                "crosses_accurate": 0.0571,
                "touches": 25.1867,
                "possession_lost": 9.6969,
                "dispossessed": 0.8141,
                "duels_lost": 6.4016,
                "aerial_lost": 3.4489,
                "total_contest": 0.9777,
                "won_contest": 0.1094,
                "ball_recovery": 1.4734,
                "challenges_lost": 0.4565,
                "fouls": 0.8904,
                "fouls_drawn": 1.5964,
                "assist_rate": 0.0209,
                "assists": 0,
                "interceptions": 0.0058,
                "tackles_won": 0.4943,
                "tackles": 0.6103,
                "clearances": 1.0141,
                "blocks": 0.1313,
                "big_chances_created": 0.2485,
                "big_chances_missed": 0.3787,
                "xgot": 0.1916,
                "offsides": 0.4093,
                "ball_carries": 5.4489,
                "total_progression": 11.261,
                "progressive_carries": 0.6507,
                "shots_off_target": 1.4286,
                "duel_xg_multiplier": 0.9758,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.184,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Yoel Lago, Sebastián Cáceres",
                "opponent_faced": "Yoel Lago, Sebastián Cáceres",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2154,
                "projected_assists": 0,
                "assist_probability": 0.0342,
                "finishing_factor": 1.1321,
                "creation_factor": 0.8522,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0342,
                "assist_rate": 0.0209,
                "provider_weight": 0.0297,
                "squad_weight_total": 0.5324,
                "weight_share": 0.0557,
                "creation_factor": 0.8522,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12
              }
            }
          ]
        },
        "Pablo Ibáñez": {
          "player_id": 1084381,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 19,
          "height": 179,
          "market_value": 4099999,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0471,
            "assist_rate": 0.0775,
            "assists": 0,
            "expected_goals": 0.0541,
            "goal_rate": 0.0611,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.804,
            "minutes": 80,
            "total_pass": 27,
            "accurate_pass": 22,
            "duels_won": 6,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 11,
            "accurate_own_half_passes": 10,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 13,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 44,
            "possession_lost": 9.8734,
            "dispossessed": 1.4002,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0834,
            "ball_carries": 14,
            "total_progression": 65,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "opponent_faced": "Aleix Febas",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "antagonist_source": "defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0527,
            "projected_assists": 0,
            "assist_probability": 0.046,
            "finishing_factor": 0.8989,
            "creation_factor": 1.25,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0104,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 19,
                "tackles": 6,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 9,
                "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": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 85,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0079,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 23,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 4,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3934,
                "expected_assists": 0.0358,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 34,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 45,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 7,
                "clearances": 1,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2584,
                "expected_assists": 0.0132,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 40,
                "accurate_pass": 35,
                "tackles": 1,
                "clearances": 1,
                "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": "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": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0312,
                "expected_assists": 0.0078,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 21,
                "accurate_pass": 17,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 2,
                "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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.066,
                "expected_assists": 0.0519,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 40,
                "accurate_pass": 32,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 9,
                "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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0061,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 23,
                "interceptions": 2,
                "clearances": 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": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 74,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2479,
                "expected_assists": 0.0201,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 19,
                "accurate_pass": 14,
                "tackles": 3,
                "tackles_won": 3,
                "duels_won": 5,
                "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": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 21,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0023,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 8,
                "tackles": 4,
                "tackles_won": 2,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3981,
            "combined_rank_score": 1953.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 391.0,
            "sofascore_rating": 6.95,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3516.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.804,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pablo Ibáñez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Patrick Sequeira",
                  "ranking": 3976
                },
                {
                  "player_name": "Javi Rueda",
                  "ranking": 3977
                },
                {
                  "player_name": "Freddie Potts",
                  "ranking": 3978
                },
                {
                  "player_name": "Chupe",
                  "ranking": 3979
                },
                {
                  "player_name": "Bigas",
                  "ranking": 3980
                }
              ],
              "lower": [
                {
                  "player_name": "Jonny",
                  "ranking": 3982
                },
                {
                  "player_name": "Mohamed Belloumi",
                  "ranking": 3983
                },
                {
                  "player_name": "Jack Hendry",
                  "ranking": 3984
                },
                {
                  "player_name": "Areso",
                  "ranking": 3985
                },
                {
                  "player_name": "Gorosabel",
                  "ranking": 3986
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "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.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9984,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 270.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.67,
              "shots_on_target_pct": 20.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (M_service) evaluated 45 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Alavés, rel: 0.20, 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.5876,
                "expected_assists": 0.0449,
                "assists": 0.0787,
                "assist_rate": 0.0787,
                "expected_goals": 0.0737,
                "goals": 0.062,
                "goal_rate": 0.062,
                "shots_on_target": 0.2823,
                "total_shots": 0.9824,
                "rating": 6.804,
                "minutes": 80.03,
                "total_pass": 27.2541,
                "accurate_pass": 22.2701,
                "duels_won": 5.7683,
                "total_long_balls": 2.2359,
                "accurate_long_balls": 0.8308,
                "total_own_half_passes": 11.1595,
                "accurate_own_half_passes": 9.7096,
                "total_opp_half_passes": 16.0946,
                "accurate_opp_half_passes": 12.5605,
                "crosses_total": 0.8325,
                "crosses_accurate": 0.0828,
                "touches": 44.4903,
                "possession_lost": 9.8892,
                "dispossessed": 1.4024,
                "duels_lost": 5.1909,
                "aerial_won": 0.74,
                "aerial_lost": 0.3836,
                "interceptions": 1.0646,
                "tackles_won": 0.9164,
                "tackles": 2.2669,
                "clearances": 1.4009,
                "total_contest": 1.6832,
                "won_contest": 1.0024,
                "challenges_lost": 1.0077,
                "fouls": 1.7173,
                "fouls_drawn": 1.7591,
                "blocks": 0.4621,
                "big_chances_created": 0.0067,
                "big_chances_missed": 0.1433,
                "xgot": 0.1137,
                "ball_carries": 13.5334,
                "total_progression": 65.355,
                "progressive_carries": 1.5294,
                "shots_off_target": 0.7001
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.9575,
                  "creative_index": 0.1463,
                  "expectedGoals": 0.0905,
                  "expectedAssists": 0.0171,
                  "onTargetScoringAttempt": 0.2149
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5875714421272278,
                    "model_output": 0.5876,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1087
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0904
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0896
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0427
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0265
                        }
                      ],
                      "others": -0.1267,
                      "total": 0.5876,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.129766
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.12253
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.121434
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.056021
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.036389
                        }
                      ],
                      "others_margin": -0.195297
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04494931176304817,
                    "model_output": 0.0449,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.017
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0089
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0078
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0062
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.0134,
                      "total": 0.0449,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.22067
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.138336
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122479
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.095445
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.05068
                        }
                      ],
                      "others_margin": -0.261967
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07867243885993958,
                    "model_output": 0.0787,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0077
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0069
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0055
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0047
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.004
                        }
                      ],
                      "others": -0.0169,
                      "total": 0.0787,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.085065
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.069831
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.055733
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.050228
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.042993
                        }
                      ],
                      "others_margin": -0.195318
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07373277097940445,
                    "model_output": 0.0737,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0115
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0102
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0074
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0064
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.0737,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.130366
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.116101
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.082552
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.078222
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.025825
                        }
                      ],
                      "others_margin": -0.045117
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.061969295144081116,
                    "model_output": 0.062,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0152
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0124
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0069
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0065
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.0051,
                      "total": 0.062,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.168673
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.162389
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.103323
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.098293
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.040146
                        }
                      ],
                      "others_margin": -0.07993
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2822805941104889,
                    "model_output": 0.2823,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0476
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0427
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0185
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0168
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0097
                        }
                      ],
                      "others": -0.0129,
                      "total": 0.2823,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.157935
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.142874
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.059503
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.057138
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.033408
                        }
                      ],
                      "others_margin": -0.044871
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9823542237281799,
                    "model_output": 0.9824,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1457
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0732
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0349
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0187
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0186
                        }
                      ],
                      "others": -0.0508,
                      "total": 0.9824,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.145708
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.073199
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.034921
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.01874
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.018642
                        }
                      ],
                      "others_margin": -0.050868
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.804035186767578,
                    "model_output": 6.804,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0314
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0245
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0178
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0097
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0059
                        }
                      ],
                      "others": -0.0226,
                      "total": 6.804,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.031382
                        },
                        {
                          "name": "rating",
                          "margin": -0.024453
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.017764
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.009705
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.005923
                        }
                      ],
                      "others_margin": -0.022558
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 45,
                  "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 0.9984, quality 0.451)",
              "stats": {
                "key_pass": 0.5866,
                "expected_assists": 0.0449,
                "assists": 0.0785,
                "assist_rate": 0.0785,
                "expected_goals": 0.0736,
                "goals": 0.0619,
                "goal_rate": 0.0619,
                "shots_on_target": 0.2818,
                "total_shots": 0.9808,
                "rating": 6.804,
                "minutes": 80.03,
                "total_pass": 27.2105,
                "accurate_pass": 22.2345,
                "duels_won": 5.7591,
                "total_long_balls": 2.2323,
                "accurate_long_balls": 0.8295,
                "total_own_half_passes": 11.1416,
                "accurate_own_half_passes": 9.6941,
                "total_opp_half_passes": 16.0688,
                "accurate_opp_half_passes": 12.5404,
                "crosses_total": 0.8312,
                "crosses_accurate": 0.0827,
                "touches": 44.4191,
                "possession_lost": 9.8734,
                "dispossessed": 1.4002,
                "duels_lost": 5.1826,
                "aerial_won": 0.7388,
                "aerial_lost": 0.383,
                "interceptions": 1.0629,
                "tackles_won": 0.9149,
                "tackles": 2.2633,
                "clearances": 1.3987,
                "total_contest": 1.6805,
                "won_contest": 1.0008,
                "challenges_lost": 1.0061,
                "fouls": 1.7146,
                "fouls_drawn": 1.7563,
                "blocks": 0.4614,
                "big_chances_created": 0.0067,
                "big_chances_missed": 0.1431,
                "xgot": 0.1135,
                "ball_carries": 13.5117,
                "total_progression": 65.2504,
                "progressive_carries": 1.527,
                "shots_off_target": 0.699
              },
              "params": {
                "market_value_eur": 4099999,
                "quality_factor": 0.4511,
                "boost_factor": 0.9984,
                "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": {
                "key_pass": 0.5866,
                "expected_assists": 0.0449,
                "assists": 0.0775,
                "assist_rate": 0.0775,
                "expected_goals": 0.0736,
                "goals": 0.0611,
                "goal_rate": 0.0611,
                "shots_on_target": 0.282,
                "total_shots": 0.9874,
                "rating": 6.804,
                "minutes": 80.03,
                "total_pass": 27.2105,
                "accurate_pass": 22.2345,
                "duels_won": 5.7591,
                "total_long_balls": 2.2323,
                "accurate_long_balls": 0.8295,
                "total_own_half_passes": 11.1416,
                "accurate_own_half_passes": 9.6941,
                "total_opp_half_passes": 16.0688,
                "accurate_opp_half_passes": 12.5404,
                "crosses_total": 0.8281,
                "crosses_accurate": 0.0827,
                "touches": 44.4191,
                "possession_lost": 9.8734,
                "dispossessed": 1.4002,
                "duels_lost": 5.1826,
                "aerial_won": 0.7388,
                "aerial_lost": 0.383,
                "interceptions": 1.0683,
                "tackles_won": 0.9107,
                "tackles": 2.2633,
                "clearances": 1.3987,
                "total_contest": 1.6805,
                "won_contest": 1.0008,
                "challenges_lost": 1.0061,
                "fouls": 1.7077,
                "fouls_drawn": 1.7527,
                "blocks": 0.4614,
                "big_chances_created": 0.0067,
                "big_chances_missed": 0.1431,
                "xgot": 0.1135,
                "ball_carries": 13.5117,
                "total_progression": 65.2504,
                "progressive_carries": 1.527,
                "shots_off_target": 0.699
              },
              "params": {
                "blend_weight": 0.013,
                "history_matches": 45,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8892,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Alavés"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.7146,
                  "after": 1.7077
                },
                {
                  "stat": "totalShots",
                  "before": 0.9808,
                  "after": 0.9874
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.0629,
                  "after": 1.0683
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5866,
                "expected_assists": 0.0449,
                "assists": 0.0775,
                "assist_rate": 0.0775,
                "expected_goals": 0.0736,
                "goals": 0.0611,
                "goal_rate": 0.0611,
                "shots_on_target": 0.282,
                "total_shots": 0.9874,
                "rating": 6.804,
                "minutes": 80.03,
                "total_pass": 27.2105,
                "accurate_pass": 22.2345,
                "duels_won": 5.7591,
                "total_long_balls": 2.2323,
                "accurate_long_balls": 0.8295,
                "total_own_half_passes": 11.1416,
                "accurate_own_half_passes": 9.6941,
                "total_opp_half_passes": 16.0688,
                "accurate_opp_half_passes": 12.5404,
                "crosses_total": 0.8281,
                "crosses_accurate": 0.0827,
                "touches": 44.4191,
                "possession_lost": 9.8734,
                "dispossessed": 1.4002,
                "duels_lost": 5.1826,
                "aerial_won": 0.7388,
                "aerial_lost": 0.383,
                "interceptions": 1.0683,
                "tackles_won": 0.9107,
                "tackles": 2.2633,
                "clearances": 1.3987,
                "total_contest": 1.6805,
                "won_contest": 1.0008,
                "challenges_lost": 1.0061,
                "fouls": 1.7077,
                "fouls_drawn": 1.7527,
                "blocks": 0.4614,
                "big_chances_created": 0.0067,
                "big_chances_missed": 0.1431,
                "xgot": 0.1135,
                "ball_carries": 13.5117,
                "total_progression": 65.2504,
                "progressive_carries": 1.527,
                "shots_off_target": 0.699
              },
              "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.5866,
                "expected_assists": 0.0449,
                "assists": 0.0775,
                "assist_rate": 0.0775,
                "expected_goals": 0.0736,
                "goals": 0.0611,
                "goal_rate": 0.0611,
                "shots_on_target": 0.282,
                "total_shots": 0.9874,
                "rating": 6.804,
                "minutes": 80.03,
                "total_pass": 27.2105,
                "accurate_pass": 22.2345,
                "duels_won": 5.7591,
                "total_long_balls": 2.2323,
                "accurate_long_balls": 0.8295,
                "total_own_half_passes": 11.1416,
                "accurate_own_half_passes": 9.6941,
                "total_opp_half_passes": 16.0688,
                "accurate_opp_half_passes": 12.5404,
                "crosses_total": 0.8281,
                "crosses_accurate": 0.0827,
                "touches": 44.4191,
                "possession_lost": 9.8734,
                "dispossessed": 1.4002,
                "duels_lost": 5.1826,
                "aerial_won": 0.7388,
                "aerial_lost": 0.383,
                "interceptions": 1.0683,
                "tackles_won": 0.9107,
                "tackles": 2.2633,
                "clearances": 1.3987,
                "total_contest": 1.6805,
                "won_contest": 1.0008,
                "challenges_lost": 1.0061,
                "fouls": 1.7077,
                "fouls_drawn": 1.7527,
                "blocks": 0.4614,
                "big_chances_created": 0.0067,
                "big_chances_missed": 0.1431,
                "xgot": 0.1135,
                "ball_carries": 13.5117,
                "total_progression": 65.2504,
                "progressive_carries": 1.527,
                "shots_off_target": 0.699,
                "opponent_faced": "Aleix Febas",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Aleix Febas",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.5866,
                "expected_assists": 0.0449,
                "assist_rate": 0.0775,
                "assists": 0,
                "expected_goals": 0.0736,
                "goal_rate": 0.0611,
                "goals": 0,
                "shots_on_target": 0.282,
                "total_shots": 0.9874,
                "rating": 6.804,
                "minutes": 80.03,
                "total_pass": 27.2105,
                "accurate_pass": 22.2345,
                "duels_won": 5.7591,
                "total_long_balls": 2.2323,
                "accurate_long_balls": 0.8295,
                "total_own_half_passes": 11.1416,
                "accurate_own_half_passes": 9.6941,
                "total_opp_half_passes": 16.0688,
                "accurate_opp_half_passes": 12.5404,
                "crosses_total": 0.8281,
                "crosses_accurate": 0.0827,
                "touches": 44.4191,
                "possession_lost": 9.8734,
                "dispossessed": 1.4002,
                "duels_lost": 5.1826,
                "aerial_won": 0.7388,
                "aerial_lost": 0.383,
                "interceptions": 1.0683,
                "tackles_won": 0.9107,
                "tackles": 2.2633,
                "clearances": 1.3987,
                "total_contest": 1.6805,
                "won_contest": 1.0008,
                "challenges_lost": 1.0061,
                "fouls": 1.7077,
                "fouls_drawn": 1.7527,
                "blocks": 0.4614,
                "big_chances_created": 0.0067,
                "big_chances_missed": 0.1431,
                "xgot": 0.1135,
                "ball_carries": 13.5117,
                "total_progression": 65.2504,
                "progressive_carries": 1.527,
                "shots_off_target": 0.699,
                "opponent_faced": "Aleix Febas",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5866,
                "expected_assists": 0.0471,
                "assist_rate": 0.0775,
                "assists": 0,
                "expected_goals": 0.0541,
                "goal_rate": 0.0611,
                "goals": 0,
                "shots_on_target": 0.282,
                "total_shots": 0.9874,
                "rating": 6.804,
                "minutes": 80.03,
                "total_pass": 27.2105,
                "accurate_pass": 22.2345,
                "duels_won": 5.7591,
                "total_long_balls": 2.2323,
                "accurate_long_balls": 0.8295,
                "total_own_half_passes": 11.1416,
                "accurate_own_half_passes": 9.6941,
                "total_opp_half_passes": 16.0688,
                "accurate_opp_half_passes": 12.5404,
                "crosses_total": 0.8281,
                "crosses_accurate": 0.0827,
                "touches": 44.4191,
                "possession_lost": 9.8734,
                "dispossessed": 1.4002,
                "duels_lost": 5.1826,
                "aerial_won": 0.7388,
                "aerial_lost": 0.383,
                "interceptions": 1.0683,
                "tackles_won": 0.9107,
                "tackles": 2.2633,
                "clearances": 1.3987,
                "total_contest": 1.6805,
                "won_contest": 1.0008,
                "challenges_lost": 1.0061,
                "fouls": 1.7077,
                "fouls_drawn": 1.7527,
                "blocks": 0.4614,
                "big_chances_created": 0.0067,
                "big_chances_missed": 0.1431,
                "xgot": 0.0834,
                "ball_carries": 13.5117,
                "total_progression": 65.2504,
                "progressive_carries": 1.527,
                "shots_off_target": 0.699,
                "opponent_faced": "Aleix Febas",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8989,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0736,
                  "after": 0.0541
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0.5866,
                "expected_assists": 0.0471,
                "assist_rate": 0.0775,
                "assists": 0,
                "expected_goals": 0.0541,
                "goal_rate": 0.0611,
                "goals": 0,
                "shots_on_target": 0.282,
                "total_shots": 0.9874,
                "rating": 6.804,
                "minutes": 80.03,
                "total_pass": 27.2105,
                "accurate_pass": 22.2345,
                "duels_won": 5.7591,
                "total_long_balls": 2.2323,
                "accurate_long_balls": 0.8295,
                "total_own_half_passes": 11.1416,
                "accurate_own_half_passes": 9.6941,
                "total_opp_half_passes": 16.0688,
                "accurate_opp_half_passes": 12.5404,
                "crosses_total": 0.8281,
                "crosses_accurate": 0.0827,
                "touches": 44.4191,
                "possession_lost": 9.8734,
                "dispossessed": 1.4002,
                "duels_lost": 5.1826,
                "aerial_won": 0.7388,
                "aerial_lost": 0.383,
                "interceptions": 1.0683,
                "tackles_won": 0.9107,
                "tackles": 2.2633,
                "clearances": 1.3987,
                "total_contest": 1.6805,
                "won_contest": 1.0008,
                "challenges_lost": 1.0061,
                "fouls": 1.7077,
                "fouls_drawn": 1.7527,
                "blocks": 0.4614,
                "big_chances_created": 0.0067,
                "big_chances_missed": 0.1431,
                "xgot": 0.0834,
                "ball_carries": 13.5117,
                "total_progression": 65.2504,
                "progressive_carries": 1.527,
                "shots_off_target": 0.699,
                "opponent_faced": "Aleix Febas",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8989,
                "creation_factor": 1.25,
                "fifa_overall": 73.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": 3981,
                "fifa_rank": 3516.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.5866,
                "expected_assists": 0.0471,
                "assist_rate": 0.0775,
                "assists": 0,
                "expected_goals": 0.0541,
                "goal_rate": 0.0611,
                "goals": 0,
                "shots_on_target": 0.282,
                "total_shots": 0.9874,
                "rating": 6.804,
                "minutes": 80.03,
                "total_pass": 27.2105,
                "accurate_pass": 22.2345,
                "duels_won": 5.7591,
                "total_long_balls": 2.2323,
                "accurate_long_balls": 0.8295,
                "total_own_half_passes": 11.1416,
                "accurate_own_half_passes": 9.6941,
                "total_opp_half_passes": 16.0688,
                "accurate_opp_half_passes": 12.5404,
                "crosses_total": 0.8281,
                "crosses_accurate": 0.0827,
                "touches": 44.4191,
                "possession_lost": 9.8734,
                "dispossessed": 1.4002,
                "duels_lost": 5.1826,
                "aerial_won": 0.7388,
                "aerial_lost": 0.383,
                "interceptions": 1.0683,
                "tackles_won": 0.9107,
                "tackles": 2.2633,
                "clearances": 1.3987,
                "total_contest": 1.6805,
                "won_contest": 1.0008,
                "challenges_lost": 1.0061,
                "fouls": 1.7077,
                "fouls_drawn": 1.7527,
                "blocks": 0.4614,
                "big_chances_created": 0.0067,
                "big_chances_missed": 0.1431,
                "xgot": 0.0834,
                "ball_carries": 13.5117,
                "total_progression": 65.2504,
                "progressive_carries": 1.527,
                "shots_off_target": 0.699,
                "opponent_faced": "Aleix Febas",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0527,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8989,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0527,
                "goal_rate": 0.0611,
                "scorer_weight": 0.0486,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0533,
                "finishing_factor": 0.8989,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.5866,
                "expected_assists": 0.0471,
                "assist_rate": 0.0775,
                "assists": 0,
                "expected_goals": 0.0541,
                "goal_rate": 0.0611,
                "goals": 0,
                "shots_on_target": 0.282,
                "total_shots": 0.9874,
                "rating": 6.804,
                "minutes": 80.03,
                "total_pass": 27.2105,
                "accurate_pass": 22.2345,
                "duels_won": 5.7591,
                "total_long_balls": 2.2323,
                "accurate_long_balls": 0.8295,
                "total_own_half_passes": 11.1416,
                "accurate_own_half_passes": 9.6941,
                "total_opp_half_passes": 16.0688,
                "accurate_opp_half_passes": 12.5404,
                "crosses_total": 0.8281,
                "crosses_accurate": 0.0827,
                "touches": 44.4191,
                "possession_lost": 9.8734,
                "dispossessed": 1.4002,
                "duels_lost": 5.1826,
                "aerial_won": 0.7388,
                "aerial_lost": 0.383,
                "interceptions": 1.0683,
                "tackles_won": 0.9107,
                "tackles": 2.2633,
                "clearances": 1.3987,
                "total_contest": 1.6805,
                "won_contest": 1.0008,
                "challenges_lost": 1.0061,
                "fouls": 1.7077,
                "fouls_drawn": 1.7527,
                "blocks": 0.4614,
                "big_chances_created": 0.0067,
                "big_chances_missed": 0.1431,
                "xgot": 0.0834,
                "ball_carries": 13.5117,
                "total_progression": 65.2504,
                "progressive_carries": 1.527,
                "shots_off_target": 0.699,
                "opponent_faced": "Aleix Febas",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0527,
                "projected_assists": 0,
                "assist_probability": 0.046,
                "finishing_factor": 0.8989,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.046,
                "assist_rate": 0.0775,
                "provider_weight": 0.0589,
                "squad_weight_total": 0.5324,
                "weight_share": 0.1106,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12
              }
            }
          ]
        }
      },
      "bench_players": {
        "Grégoire Swiderski": {
          "player_id": 1440572,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 31,
          "height": 187,
          "market_value": 240000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.022,
            "rating": 6.8,
            "minutes": 4,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0146,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.1171,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "bench_appearance_probability": 0.109,
            "bench_expected_minutes": 4.39,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.426,
            "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": null
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": null,
            "combined_rank_score": null,
            "ranking_source": "missing_player_rankings_csv_row",
            "ranking_status": "missing",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": null,
            "fifa_rank": null,
            "fifa_overall": null,
            "fifa_source": null,
            "match_squad_rank": 6,
            "squad_role": "substitute",
            "ranking_match": "none",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Grégoire Swiderski",
            "ranking_neighbors": {
              "upper": [],
              "lower": []
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "G_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 4.392222187561249,
            "bench_appearance_prob": 0.10873737216187492,
            "market_value_adjustment": 0.4374,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "sub_appearances": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection from market-value prior (€240,000) scaled to 4.4 expected mins; FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position G (quality 0.44)",
              "stats": {
                "saves": 2.9,
                "goals_prevented": 0.45,
                "rating": 6.8,
                "minutes": 90.0,
                "total_pass": 27.0,
                "accurate_pass": 20.0,
                "total_long_balls": 8.0,
                "accurate_long_balls": 4.0,
                "touches": 32.0,
                "clearances": 0.9,
                "ball_recovery": 1.2,
                "high_claims": 0.5,
                "punches": 0.3,
                "aerial_won": 0.6,
                "sweeper_actions": 1.2,
                "sweeper_accurate": 0.7,
                "saves_inside_box": 1.2,
                "possession_lost": 2.4,
                "duels_won": 0.4,
                "duels_lost": 0.2,
                "total_contest": 0.4,
                "won_contest": 0.2,
                "fouls": 0.2,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 21.0,
                "accurate_own_half_passes": 16.0
              },
              "params": {
                "market_value_eur": 240000,
                "quality_factor": 0.4374
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 4.4 expected minutes (appearance prob 0.11)",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "expected_minutes": 4.39,
                "projection_minutes": 90.0,
                "minutes_scale": 0.0488,
                "appearance_probability": 0.109
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.109,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall n/a)",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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": null
              },
              "params": {
                "match_squad_rank": 6,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "missing_player_rankings_csv_row",
                "ranking_status": "missing",
                "ranking_match": "none"
              }
            }
          ]
        },
        "Youssef Enriquez": {
          "player_id": 1403364,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 3,
          "height": 170,
          "market_value": 5300000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.6665,
            "minutes": 14,
            "total_pass": 5,
            "accurate_pass": 4,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 2,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 2.1191,
            "dispossessed": 0.1532,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0085,
            "expected_assists": 0.0256,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0091,
            "ball_carries": 2,
            "total_progression": 8,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.304,
            "bench_expected_minutes": 13.68,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.426,
            "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": 83.0
          },
          "latest_10_games": [
            {
              "match_id": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 25,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 3,
                "interceptions": 1,
                "clearances": 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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 23,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0182,
                "expected_assists": 0.0057,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 5,
                "accurate_pass": 4,
                "clearances": 2,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 19,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0338,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 13,
                "key_pass": 1,
                "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": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 36,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 4,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 20,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0741,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 15,
                "key_pass": 1,
                "tackles": 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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 25,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0674,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 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": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0552,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 2,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083578,
              "match_date": "2026-05-09",
              "home_team": "Elche",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Elche",
              "stats": {
                "minutes": 23,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0189,
                "expected_assists": 0.3396,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 2,
                "accurate_pass": 1,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083295,
              "match_date": "2026-04-21",
              "home_team": "Real Madrid",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 66,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0681,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 15,
                "key_pass": 1,
                "clearances": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081809,
              "match_date": "2026-04-05",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 45,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0622,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 12,
                "key_pass": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 413,
            "combined_rank_score": 283.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 257.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 3.0,
            "fifa_rank": 310.0,
            "fifa_overall": 83.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6665,
            "source_file": "data/player_rankings.csv",
            "player_name": "Youssef Enriquez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jun-sang Lee",
                  "ranking": 408
                },
                {
                  "player_name": "Boburbek Yuldashov",
                  "ranking": 409
                },
                {
                  "player_name": "Dor Peretz",
                  "ranking": 410
                },
                {
                  "player_name": "Itsuki Urata",
                  "ranking": 411
                },
                {
                  "player_name": "Chi-Won Choi",
                  "ranking": 412
                }
              ],
              "lower": [
                {
                  "player_name": "Beom Song",
                  "ranking": 414
                },
                {
                  "player_name": "Irakli Azarovi",
                  "ranking": 415
                },
                {
                  "player_name": "Alexander Freeman",
                  "ranking": 416
                },
                {
                  "player_name": "Johaneko Louis Jean",
                  "ranking": 417
                },
                {
                  "player_name": "Roman Begunov",
                  "ranking": 418
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 31,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 31,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 13.684825411466107,
            "bench_appearance_prob": 0.3038557005211867,
            "market_value_adjustment": 0.9984,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (31 historical appearances) to 13.7 expected mins (appearance prob 0.30)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.2925,
                "tackles": 0.5922,
                "tackles_won": 0.3212,
                "clearances": 0.993,
                "aerial_won": 0.3529,
                "total_shots": 0.1862,
                "rating": 6.6665,
                "minutes": 24.79,
                "total_pass": 8.7311,
                "accurate_pass": 6.8231,
                "duels_won": 1.7154,
                "total_long_balls": 1.6138,
                "accurate_long_balls": 0.4653,
                "total_own_half_passes": 4.377,
                "accurate_own_half_passes": 3.6475,
                "total_opp_half_passes": 4.3541,
                "accurate_opp_half_passes": 3.1756,
                "crosses_total": 1.4069,
                "crosses_accurate": 0.6159,
                "touches": 18.3119,
                "possession_lost": 3.8449,
                "dispossessed": 0.1534,
                "duels_lost": 1.2518,
                "aerial_lost": 0.0508,
                "total_contest": 0.6254,
                "won_contest": 0.2738,
                "ball_recovery": 0.8159,
                "challenges_lost": 0.1882,
                "fouls": 0.5078,
                "fouls_drawn": 0.3989,
                "blocks": 0.0973,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0154,
                "expected_assists": 0.0465,
                "shots_on_target": 0.082,
                "big_chances_created": 0.104,
                "xgot": 0.0164,
                "ball_carries": 2.9304,
                "total_progression": 15.1047,
                "progressive_carries": 0.2251,
                "key_pass": 0.4581,
                "shots_off_target": 0.1042
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.151,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1283,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1091,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.0927,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0788,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.067,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0569,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Elche",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0484,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Real Madrid",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-05",
                    "opponent": "Osasuna",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.035,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 1.5521,
                  "aerialWon": 0.3374,
                  "totalClearance_p90": 4.1533,
                  "totalTackle": 0.8792,
                  "defensive_actions": 1.0959
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.29252889752388,
                    "model_output": 0.2925,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4748
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0467
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0141
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0126
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0104
                        }
                      ],
                      "others": -0.035,
                      "total": 0.2925,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.801888
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.128869
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.042453
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.038122
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.031285
                        }
                      ],
                      "others_margin": -0.113013
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5921832323074341,
                    "model_output": 0.5922,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7751
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0345
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0243
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0216
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0149
                        }
                      ],
                      "others": 0.0225,
                      "total": 0.5922,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.814238
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.057568
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.040988
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.036298
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.025873
                        }
                      ],
                      "others_margin": 0.038662
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.3211989402770996,
                    "model_output": 0.3212,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4886
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0251
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0161
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0101
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0098
                        }
                      ],
                      "others": -0.0029,
                      "total": 0.3212,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.848603
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.071034
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.048306
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.031716
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.030707
                        }
                      ],
                      "others_margin": -0.009113
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.9929633736610413,
                    "model_output": 0.993,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0736
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.3068
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.1311
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0535
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0457
                        }
                      ],
                      "others": 0.171,
                      "total": 0.993,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.926483
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.255838
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.133101
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.059801
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.054046
                        }
                      ],
                      "others_margin": 0.188849
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.3528936207294464,
                    "model_output": 0.3529,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7728
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.221
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0333
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0284
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0169
                        }
                      ],
                      "others": 0.0142,
                      "total": 0.3529,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.823471
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.455032
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.090737
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.084558
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.051318
                        }
                      ],
                      "others_margin": 0.040758
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.1862345039844513,
                    "model_output": 0.1862,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.202
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0742
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0099
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0082
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0068
                        }
                      ],
                      "others": 0.0128,
                      "total": 0.1862,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.202046
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.074207
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.009864
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.008154
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.006815
                        }
                      ],
                      "others_margin": 0.012821
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.666506767272949,
                    "model_output": 6.6665,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0372
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0345
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0137
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0116
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0107
                        }
                      ],
                      "others": -0.0105,
                      "total": 6.6665,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.037212
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.034489
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013674
                        },
                        {
                          "name": "touches",
                          "margin": -0.011642
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.010678
                        }
                      ],
                      "others_margin": -0.010502
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 31,
                  "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 0.9984, quality 0.466)",
              "stats": {
                "interceptions": 0.2921,
                "tackles": 0.5912,
                "tackles_won": 0.3207,
                "clearances": 0.9914,
                "aerial_won": 0.3523,
                "total_shots": 0.1859,
                "rating": 6.6665,
                "minutes": 24.79,
                "total_pass": 8.7171,
                "accurate_pass": 6.8122,
                "duels_won": 1.7127,
                "total_long_balls": 1.6112,
                "accurate_long_balls": 0.4646,
                "total_own_half_passes": 4.37,
                "accurate_own_half_passes": 3.6417,
                "total_opp_half_passes": 4.3471,
                "accurate_opp_half_passes": 3.1705,
                "crosses_total": 1.4046,
                "crosses_accurate": 0.6149,
                "touches": 18.2826,
                "possession_lost": 3.8387,
                "dispossessed": 0.1532,
                "duels_lost": 1.2498,
                "aerial_lost": 0.0507,
                "total_contest": 0.6244,
                "won_contest": 0.2734,
                "ball_recovery": 0.8146,
                "challenges_lost": 0.1879,
                "fouls": 0.507,
                "fouls_drawn": 0.3983,
                "blocks": 0.0971,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0154,
                "expected_assists": 0.0464,
                "shots_on_target": 0.0819,
                "big_chances_created": 0.1038,
                "xgot": 0.0164,
                "ball_carries": 2.9257,
                "total_progression": 15.0805,
                "progressive_carries": 0.2247,
                "key_pass": 0.4574,
                "shots_off_target": 0.104
              },
              "params": {
                "market_value_eur": 5300000,
                "quality_factor": 0.4659,
                "boost_factor": 0.9984,
                "reference_quality": 0.505,
                "history_matches": 31,
                "history_shrink": 0.1389,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 24.8 to 13.7 expected minutes (appearance prob 0.30)",
              "stats": {
                "interceptions": 0.1612,
                "tackles": 0.3264,
                "tackles_won": 0.177,
                "clearances": 0.5473,
                "aerial_won": 0.1945,
                "total_shots": 0.1026,
                "rating": 6.6665,
                "minutes": 13.68,
                "total_pass": 4.8121,
                "accurate_pass": 3.7605,
                "duels_won": 0.9455,
                "total_long_balls": 0.8894,
                "accurate_long_balls": 0.2565,
                "total_own_half_passes": 2.4124,
                "accurate_own_half_passes": 2.0103,
                "total_opp_half_passes": 2.3997,
                "accurate_opp_half_passes": 1.7502,
                "crosses_total": 0.7754,
                "crosses_accurate": 0.3394,
                "touches": 10.0925,
                "possession_lost": 2.1191,
                "dispossessed": 0.1532,
                "duels_lost": 0.6899,
                "aerial_lost": 0.0507,
                "total_contest": 0.3447,
                "won_contest": 0.1509,
                "ball_recovery": 0.4497,
                "challenges_lost": 0.1879,
                "fouls": 0.2799,
                "fouls_drawn": 0.2199,
                "blocks": 0.0536,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0085,
                "expected_assists": 0.0256,
                "shots_on_target": 0.0452,
                "big_chances_created": 0.0573,
                "xgot": 0.0091,
                "ball_carries": 1.6151,
                "total_progression": 8.3249,
                "progressive_carries": 0.124,
                "key_pass": 0.2525,
                "shots_off_target": 0.0574,
                "bench_appearance_probability": 0.304,
                "bench_expected_minutes": 13.68
              },
              "params": {
                "expected_minutes": 13.68,
                "projection_minutes": 24.79,
                "minutes_scale": 0.552,
                "appearance_probability": 0.304
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.1612,
                "tackles": 0.3264,
                "tackles_won": 0.177,
                "clearances": 0.5473,
                "aerial_won": 0.1945,
                "total_shots": 0.1026,
                "rating": 6.6665,
                "minutes": 13.68,
                "total_pass": 4.8121,
                "accurate_pass": 3.7605,
                "duels_won": 0.9455,
                "total_long_balls": 0.8894,
                "accurate_long_balls": 0.2565,
                "total_own_half_passes": 2.4124,
                "accurate_own_half_passes": 2.0103,
                "total_opp_half_passes": 2.3997,
                "accurate_opp_half_passes": 1.7502,
                "crosses_total": 0.7754,
                "crosses_accurate": 0.3394,
                "touches": 10.0925,
                "possession_lost": 2.1191,
                "dispossessed": 0.1532,
                "duels_lost": 0.6899,
                "aerial_lost": 0.0507,
                "total_contest": 0.3447,
                "won_contest": 0.1509,
                "ball_recovery": 0.4497,
                "challenges_lost": 0.1879,
                "fouls": 0.2799,
                "fouls_drawn": 0.2199,
                "blocks": 0.0536,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0085,
                "expected_assists": 0.0256,
                "shots_on_target": 0.0452,
                "big_chances_created": 0.0573,
                "xgot": 0.0091,
                "ball_carries": 1.6151,
                "total_progression": 8.3249,
                "progressive_carries": 0.124,
                "key_pass": 0.2525,
                "shots_off_target": 0.0574,
                "bench_appearance_probability": 0.304,
                "bench_expected_minutes": 13.68
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.1612,
                "tackles": 0.3264,
                "tackles_won": 0.177,
                "clearances": 0.5473,
                "aerial_won": 0.1945,
                "total_shots": 0.1026,
                "rating": 6.6665,
                "minutes": 13.68,
                "total_pass": 4.8121,
                "accurate_pass": 3.7605,
                "duels_won": 0.9455,
                "total_long_balls": 0.8894,
                "accurate_long_balls": 0.2565,
                "total_own_half_passes": 2.4124,
                "accurate_own_half_passes": 2.0103,
                "total_opp_half_passes": 2.3997,
                "accurate_opp_half_passes": 1.7502,
                "crosses_total": 0.7754,
                "crosses_accurate": 0.3394,
                "touches": 10.0925,
                "possession_lost": 2.1191,
                "dispossessed": 0.1532,
                "duels_lost": 0.6899,
                "aerial_lost": 0.0507,
                "total_contest": 0.3447,
                "won_contest": 0.1509,
                "ball_recovery": 0.4497,
                "challenges_lost": 0.1879,
                "fouls": 0.2799,
                "fouls_drawn": 0.2199,
                "blocks": 0.0536,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0085,
                "expected_assists": 0.0256,
                "shots_on_target": 0.0452,
                "big_chances_created": 0.0573,
                "xgot": 0.0091,
                "ball_carries": 1.6151,
                "total_progression": 8.3249,
                "progressive_carries": 0.124,
                "key_pass": 0.2525,
                "shots_off_target": 0.0574,
                "bench_appearance_probability": 0.304,
                "bench_expected_minutes": 13.68,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.304,
                "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 83.0)",
              "stats": {
                "interceptions": 0.1612,
                "tackles": 0.3264,
                "tackles_won": 0.177,
                "clearances": 0.5473,
                "aerial_won": 0.1945,
                "total_shots": 0.1026,
                "rating": 6.6665,
                "minutes": 13.68,
                "total_pass": 4.8121,
                "accurate_pass": 3.7605,
                "duels_won": 0.9455,
                "total_long_balls": 0.8894,
                "accurate_long_balls": 0.2565,
                "total_own_half_passes": 2.4124,
                "accurate_own_half_passes": 2.0103,
                "total_opp_half_passes": 2.3997,
                "accurate_opp_half_passes": 1.7502,
                "crosses_total": 0.7754,
                "crosses_accurate": 0.3394,
                "touches": 10.0925,
                "possession_lost": 2.1191,
                "dispossessed": 0.1532,
                "duels_lost": 0.6899,
                "aerial_lost": 0.0507,
                "total_contest": 0.3447,
                "won_contest": 0.1509,
                "ball_recovery": 0.4497,
                "challenges_lost": 0.1879,
                "fouls": 0.2799,
                "fouls_drawn": 0.2199,
                "blocks": 0.0536,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0085,
                "expected_assists": 0.0256,
                "shots_on_target": 0.0452,
                "big_chances_created": 0.0573,
                "xgot": 0.0091,
                "ball_carries": 1.6151,
                "total_progression": 8.3249,
                "progressive_carries": 0.124,
                "key_pass": 0.2525,
                "shots_off_target": 0.0574,
                "bench_appearance_probability": 0.304,
                "bench_expected_minutes": 13.68,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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": 83.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 413,
                "fifa_rank": 310.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 83.0
              }
            }
          ]
        },
        "Victor Parada": {
          "player_id": 985726,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 184,
          "market_value": 3900000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.6222,
            "minutes": 14,
            "total_pass": 4,
            "accurate_pass": 3,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 7,
            "possession_lost": 1.7146,
            "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.0042,
            "expected_assists": 0.0089,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.301,
            "bench_expected_minutes": 13.62,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.426,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 33,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0328,
                "expected_assists": 0.0012,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 12,
                "accurate_pass": 10,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 20,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083603,
              "match_date": "2026-05-13",
              "home_team": "Deportivo Alavés",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 80,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 2,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083578,
              "match_date": "2026-05-09",
              "home_team": "Elche",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0279,
                "expected_assists": 0.0046,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 19,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 7,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083364,
              "match_date": "2026-05-02",
              "home_team": "Deportivo Alavés",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1356,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 39,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083202,
              "match_date": "2026-04-25",
              "home_team": "Deportivo Alavés",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 81,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.002,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083295,
              "match_date": "2026-04-21",
              "home_team": "Real Madrid",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2795,
                "expected_assists": 0.0044,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 32,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083152,
              "match_date": "2026-04-11",
              "home_team": "Real Sociedad",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0262,
                "expected_assists": 0.004,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 23,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081809,
              "match_date": "2026-04-05",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1129,
                "expected_assists": 0.0252,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 41,
                "accurate_pass": 38,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083689,
              "match_date": "2026-03-22",
              "home_team": "Celta Vigo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0162,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2617,
            "combined_rank_score": 1181.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 916.0,
            "sofascore_rating": 6.4966,
            "sofascore_appearances": 30.0,
            "fifa_rank": 1447.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6222,
            "source_file": "data/player_rankings.csv",
            "player_name": "Victor Parada",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Carlos Herrera",
                  "ranking": 2612
                },
                {
                  "player_name": "Oybek Urmonjonov",
                  "ranking": 2613
                },
                {
                  "player_name": "Jeremiah Mensah",
                  "ranking": 2614
                },
                {
                  "player_name": "Bendito Mantato",
                  "ranking": 2615
                },
                {
                  "player_name": "Kieran Trippier",
                  "ranking": 2616
                }
              ],
              "lower": [
                {
                  "player_name": "Maximilian Arnold",
                  "ranking": 2618
                },
                {
                  "player_name": "Julián Alfaro",
                  "ranking": 2619
                },
                {
                  "player_name": "Min-Sung Kim",
                  "ranking": 2620
                },
                {
                  "player_name": "Mohamed Amoura",
                  "ranking": 2621
                },
                {
                  "player_name": "Łukasz Skorupski",
                  "ranking": 2622
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 30,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 30,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 13.61644058998921,
            "bench_appearance_prob": 0.30074729954496415,
            "market_value_adjustment": 0.9976,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (30 historical appearances) to 13.6 expected mins (appearance prob 0.30)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.2933,
                "tackles": 0.4792,
                "tackles_won": 0.2667,
                "clearances": 0.9228,
                "aerial_won": 0.3832,
                "total_shots": 0.1339,
                "rating": 6.6222,
                "minutes": 20.49,
                "total_pass": 5.6998,
                "accurate_pass": 4.1449,
                "duels_won": 1.6164,
                "total_long_balls": 1.2734,
                "accurate_long_balls": 0.5393,
                "total_own_half_passes": 2.1571,
                "accurate_own_half_passes": 2.1571,
                "total_opp_half_passes": 3.5427,
                "accurate_opp_half_passes": 1.9878,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.2428,
                "possession_lost": 2.5864,
                "dispossessed": 0.0,
                "duels_lost": 0.5512,
                "aerial_lost": 0.2696,
                "total_contest": 0.3312,
                "won_contest": 0.3312,
                "ball_recovery": 0.9745,
                "challenges_lost": 0.0,
                "fouls": 0.2815,
                "fouls_drawn": 0.0,
                "blocks": 0.2696,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0063,
                "expected_assists": 0.0134,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.0,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1339
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:05:03.872029+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 33.0,
                    "is_starting": true,
                    "weight": 0.1512,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1285,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "FC Barcelona",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1092,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0928,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0789,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Mallorca",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0671,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.057,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0485,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-04-05",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0412,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.035,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 3.1828,
                  "aerialWon": 0.866,
                  "totalClearance_p90": 3.5484,
                  "totalTackle": 1.2381,
                  "defensive_actions": 1.7254
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.2932625710964203,
                    "model_output": 0.2933,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4854
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0422
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0093
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0082
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0067
                        }
                      ],
                      "others": -0.0158,
                      "total": 0.2933,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.829629
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.119065
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.028398
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.025577
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.021548
                        }
                      ],
                      "others_margin": -0.052662
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.4792236089706421,
                    "model_output": 0.4792,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7834
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0351
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0227
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.015
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0146
                        }
                      ],
                      "others": -0.0415,
                      "total": 0.4792,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.827825
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.059373
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.040441
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.027616
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.027578
                        }
                      ],
                      "others_margin": -0.083141
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.26667889952659607,
                    "model_output": 0.2667,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5053
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0134
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": -0.0116
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0095
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0081
                        }
                      ],
                      "others": -0.0558,
                      "total": 0.2667,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.895524
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.039093
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": -0.035259
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.029829
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.025475
                        }
                      ],
                      "others_margin": -0.189851
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.9228101372718811,
                    "model_output": 0.9228,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.2477
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0694
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0558
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0452
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0452
                        }
                      ],
                      "others": -0.137,
                      "total": 0.9228,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.063584
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.060389
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.051279
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.043606
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.043603
                        }
                      ],
                      "others_margin": -0.138433
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.38315895199775696,
                    "model_output": 0.3832,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8514
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1054
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0176
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0122
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0106
                        }
                      ],
                      "others": -0.0425,
                      "total": 0.3832,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.962743
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.223736
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.042848
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.029721
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.025189
                        }
                      ],
                      "others_margin": -0.105022
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.13389195501804352,
                    "model_output": 0.1339,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2287
                        },
                        {
                          "name": "rating",
                          "contribution": -0.019
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0119
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0118
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0085
                        }
                      ],
                      "others": -0.0607,
                      "total": 0.1339,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.2287
                        },
                        {
                          "name": "rating",
                          "margin": -0.019027
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.011925
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.011843
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.008515
                        }
                      ],
                      "others_margin": -0.060599
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6221818923950195,
                    "model_output": 6.6222,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0424
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.022
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0209
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0165
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0145
                        }
                      ],
                      "others": -0.0462,
                      "total": 6.6222,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.042422
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.022013
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.020885
                        },
                        {
                          "name": "rating",
                          "margin": -0.016491
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014457
                        }
                      ],
                      "others_margin": -0.046253
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 30,
                  "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.9976, quality 0.449)",
              "stats": {
                "interceptions": 0.2926,
                "tackles": 0.4781,
                "tackles_won": 0.266,
                "clearances": 0.9206,
                "aerial_won": 0.3822,
                "total_shots": 0.1336,
                "rating": 6.6222,
                "minutes": 20.49,
                "total_pass": 5.6861,
                "accurate_pass": 4.135,
                "duels_won": 1.6125,
                "total_long_balls": 1.2703,
                "accurate_long_balls": 0.538,
                "total_own_half_passes": 2.1519,
                "accurate_own_half_passes": 2.1519,
                "total_opp_half_passes": 3.5342,
                "accurate_opp_half_passes": 1.983,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.2182,
                "possession_lost": 2.5802,
                "dispossessed": 0.0,
                "duels_lost": 0.5499,
                "aerial_lost": 0.269,
                "total_contest": 0.3304,
                "won_contest": 0.3304,
                "ball_recovery": 0.9722,
                "challenges_lost": 0.0,
                "fouls": 0.2808,
                "fouls_drawn": 0.0,
                "blocks": 0.269,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0063,
                "expected_assists": 0.0134,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.0,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1336
              },
              "params": {
                "market_value_eur": 3900000,
                "quality_factor": 0.4486,
                "boost_factor": 0.9976,
                "reference_quality": 0.505,
                "history_matches": 30,
                "history_shrink": 0.1429,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 20.5 to 13.6 expected minutes (appearance prob 0.30)",
              "stats": {
                "interceptions": 0.1944,
                "tackles": 0.3177,
                "tackles_won": 0.1768,
                "clearances": 0.6118,
                "aerial_won": 0.254,
                "total_shots": 0.0888,
                "rating": 6.6222,
                "minutes": 13.62,
                "total_pass": 3.7786,
                "accurate_pass": 2.7479,
                "duels_won": 1.0716,
                "total_long_balls": 0.8442,
                "accurate_long_balls": 0.3575,
                "total_own_half_passes": 1.43,
                "accurate_own_half_passes": 1.43,
                "total_opp_half_passes": 2.3486,
                "accurate_opp_half_passes": 1.3178,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 6.7904,
                "possession_lost": 1.7146,
                "dispossessed": 0.0,
                "duels_lost": 0.3654,
                "aerial_lost": 0.269,
                "total_contest": 0.2196,
                "won_contest": 0.2196,
                "ball_recovery": 0.6461,
                "challenges_lost": 0.0,
                "fouls": 0.1866,
                "fouls_drawn": 0.0,
                "blocks": 0.1788,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0042,
                "expected_assists": 0.0089,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.0,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0888,
                "bench_appearance_probability": 0.301,
                "bench_expected_minutes": 13.62
              },
              "params": {
                "expected_minutes": 13.62,
                "projection_minutes": 20.49,
                "minutes_scale": 0.6645,
                "appearance_probability": 0.301
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.1944,
                "tackles": 0.3177,
                "tackles_won": 0.1768,
                "clearances": 0.6118,
                "aerial_won": 0.254,
                "total_shots": 0.0888,
                "rating": 6.6222,
                "minutes": 13.62,
                "total_pass": 3.7786,
                "accurate_pass": 2.7479,
                "duels_won": 1.0716,
                "total_long_balls": 0.8442,
                "accurate_long_balls": 0.3575,
                "total_own_half_passes": 1.43,
                "accurate_own_half_passes": 1.43,
                "total_opp_half_passes": 2.3486,
                "accurate_opp_half_passes": 1.3178,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 6.7904,
                "possession_lost": 1.7146,
                "dispossessed": 0.0,
                "duels_lost": 0.3654,
                "aerial_lost": 0.269,
                "total_contest": 0.2196,
                "won_contest": 0.2196,
                "ball_recovery": 0.6461,
                "challenges_lost": 0.0,
                "fouls": 0.1866,
                "fouls_drawn": 0.0,
                "blocks": 0.1788,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0042,
                "expected_assists": 0.0089,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.0,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0888,
                "bench_appearance_probability": 0.301,
                "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.1944,
                "tackles": 0.3177,
                "tackles_won": 0.1768,
                "clearances": 0.6118,
                "aerial_won": 0.254,
                "total_shots": 0.0888,
                "rating": 6.6222,
                "minutes": 13.62,
                "total_pass": 3.7786,
                "accurate_pass": 2.7479,
                "duels_won": 1.0716,
                "total_long_balls": 0.8442,
                "accurate_long_balls": 0.3575,
                "total_own_half_passes": 1.43,
                "accurate_own_half_passes": 1.43,
                "total_opp_half_passes": 2.3486,
                "accurate_opp_half_passes": 1.3178,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 6.7904,
                "possession_lost": 1.7146,
                "dispossessed": 0.0,
                "duels_lost": 0.3654,
                "aerial_lost": 0.269,
                "total_contest": 0.2196,
                "won_contest": 0.2196,
                "ball_recovery": 0.6461,
                "challenges_lost": 0.0,
                "fouls": 0.1866,
                "fouls_drawn": 0.0,
                "blocks": 0.1788,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0042,
                "expected_assists": 0.0089,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.0,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0888,
                "bench_appearance_probability": 0.301,
                "bench_expected_minutes": 13.62,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.301,
                "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 77.0)",
              "stats": {
                "interceptions": 0.1944,
                "tackles": 0.3177,
                "tackles_won": 0.1768,
                "clearances": 0.6118,
                "aerial_won": 0.254,
                "total_shots": 0.0888,
                "rating": 6.6222,
                "minutes": 13.62,
                "total_pass": 3.7786,
                "accurate_pass": 2.7479,
                "duels_won": 1.0716,
                "total_long_balls": 0.8442,
                "accurate_long_balls": 0.3575,
                "total_own_half_passes": 1.43,
                "accurate_own_half_passes": 1.43,
                "total_opp_half_passes": 2.3486,
                "accurate_opp_half_passes": 1.3178,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 6.7904,
                "possession_lost": 1.7146,
                "dispossessed": 0.0,
                "duels_lost": 0.3654,
                "aerial_lost": 0.269,
                "total_contest": 0.2196,
                "won_contest": 0.2196,
                "ball_recovery": 0.6461,
                "challenges_lost": 0.0,
                "fouls": 0.1866,
                "fouls_drawn": 0.0,
                "blocks": 0.1788,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0042,
                "expected_assists": 0.0089,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.0,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0888,
                "bench_appearance_probability": 0.301,
                "bench_expected_minutes": 13.62,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 2617,
                "fifa_rank": 1447.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            }
          ]
        },
        "Ángel Pérez": {
          "player_id": 1513222,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 7,
          "height": 183,
          "market_value": 4600000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1059,
            "assist_rate": 0.1268,
            "assists": 0,
            "expected_goals": 0.068,
            "goal_rate": 0.0926,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7656,
            "minutes": 22,
            "total_pass": 10,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 17,
            "possession_lost": 6.0316,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0292,
            "ball_carries": 5,
            "total_progression": 26,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.309,
            "bench_expected_minutes": 22.05,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.426,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16421056,
              "match_date": "2026-10-10",
              "home_team": "Deportivo Alavés",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 61,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1258,
                "expected_assists": 0.0104,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 17,
                "accurate_pass": 14,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 15,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1035,
                "total_shots": 0,
                "total_pass": 2,
                "clearances": 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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 85,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0565,
                "expected_assists": 0.1624,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 13,
                "key_pass": 2,
                "interceptions": 1,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 86,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4533,
                "expected_assists": 0.196,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 32,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 4,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 8.5,
                "assist_rate": 2.0,
                "assists": 2,
                "expected_goals": 0.1634,
                "expected_assists": 0.4685,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 30,
                "accurate_pass": 24,
                "key_pass": 3,
                "aerial_won": 1,
                "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": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 71,
                "rating": 7.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1179,
                "expected_assists": 0.3338,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 7,
                "accurate_pass": 5,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 80,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0598,
                "expected_assists": 0.3395,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 12,
                "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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 65,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0715,
                "expected_assists": 0.0587,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 11,
                "accurate_pass": 9,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0211,
                "expected_assists": 0.1541,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 31,
                "accurate_pass": 27,
                "key_pass": 2,
                "interceptions": 1,
                "duels_won": 3,
                "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": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.092,
                "expected_assists": 0.006,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 10,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 4209,
            "combined_rank_score": 2239.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 236.0,
            "sofascore_rating": 7.1333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 4243.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7656,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ángel Pérez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Toti",
                  "ranking": 4204
                },
                {
                  "player_name": "Tristan Crama",
                  "ranking": 4205
                },
                {
                  "player_name": "Léo Scienza",
                  "ranking": 4206
                },
                {
                  "player_name": "Iván Villar",
                  "ranking": 4207
                },
                {
                  "player_name": "Arthur Avom Ebong",
                  "ranking": 4208
                }
              ],
              "lower": [
                {
                  "player_name": "Salomón Rondón",
                  "ranking": 4210
                },
                {
                  "player_name": "Adrián Niño",
                  "ranking": 4211
                },
                {
                  "player_name": "Anthony Lopes",
                  "ranking": 4212
                },
                {
                  "player_name": "Thorgan Hazard",
                  "ranking": 4213
                },
                {
                  "player_name": "Kenny Lala",
                  "ranking": 4214
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.774,
          "history_matches": 24,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 24,
            "data_confidence": 0.774,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.05070150421028,
            "bench_appearance_prob": 0.309,
            "market_value_adjustment": 0.9975,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.4166666666666667,
              "prior_reliability": 0.16
            },
            "rationale": "Bench projection scaled from XGBoost M_service (24 historical appearances) to 22.1 expected mins (appearance prob 0.31); 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.7042,
                "expected_assists": 0.1069,
                "assists": 0.1285,
                "assist_rate": 0.1285,
                "expected_goals": 0.0686,
                "goals": 0.0953,
                "goal_rate": 0.0953,
                "shots_on_target": 0.2148,
                "total_shots": 0.7587,
                "rating": 6.7656,
                "minutes": 22.21,
                "total_pass": 9.9135,
                "accurate_pass": 6.9222,
                "duels_won": 1.9329,
                "total_long_balls": 0.3887,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.6181,
                "accurate_own_half_passes": 2.726,
                "total_opp_half_passes": 6.2954,
                "accurate_opp_half_passes": 4.1963,
                "crosses_total": 1.7104,
                "crosses_accurate": 0.3887,
                "touches": 17.3343,
                "possession_lost": 6.0904,
                "dispossessed": 0.0,
                "duels_lost": 1.7191,
                "aerial_won": 0.0,
                "aerial_lost": 0.3304,
                "interceptions": 0.0,
                "tackles_won": 0.6608,
                "tackles": 0.6608,
                "clearances": 0.6696,
                "total_contest": 1.6696,
                "won_contest": 0.6113,
                "challenges_lost": 0.0,
                "fouls": 0.3304,
                "fouls_drawn": 0.6608,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0295,
                "ball_carries": 4.7512,
                "total_progression": 26.0602,
                "progressive_carries": 1.0496,
                "shots_off_target": 0.5439
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Atlético Madrid",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.1531,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.1301,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1106,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.094,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0799,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Villarreal",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0679,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0577,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0491,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0417,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0355,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 1.4467,
                  "creative_index": 0.6046,
                  "expectedGoals": 0.1107,
                  "expectedAssists": 0.1689,
                  "onTargetScoringAttempt": 0.5487
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.7041712999343872,
                    "model_output": 0.7042,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3696
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0612
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0485
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0405
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0208
                        }
                      ],
                      "others": 0.0514,
                      "total": 0.7042,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.53435
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.110641
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.079725
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.061937
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.031395
                        }
                      ],
                      "others_margin": 0.075897
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.1069478914141655,
                    "model_output": 0.1069,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0288
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0116
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.01
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0062
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0041
                        }
                      ],
                      "others": 0.0182,
                      "total": 0.1069,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.410445
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.185837
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.136579
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.076364
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.046959
                        }
                      ],
                      "others_margin": 0.186894
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.12849557399749756,
                    "model_output": 0.1285,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0172
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0076
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0082
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0057
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": 0.0051
                        }
                      ],
                      "others": 0.0319,
                      "total": 0.1285,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.219324
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.10246
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.100764
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.063755
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": 0.054458
                        }
                      ],
                      "others_margin": 0.285099
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06862341612577438,
                    "model_output": 0.0686,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0431
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0108
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0058
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0047
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0041
                        }
                      ],
                      "others": 0.0002,
                      "total": 0.0686,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.611321
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.191044
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.089981
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.06767
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.058137
                        }
                      ],
                      "others_margin": 0.002968
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.09528207778930664,
                    "model_output": 0.0953,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0354
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0134
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0065
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.007
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0051
                        }
                      ],
                      "others": 0.0009,
                      "total": 0.0953,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.448961
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.193836
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.081924
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.081588
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.055058
                        }
                      ],
                      "others_margin": 0.01059
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.21477240324020386,
                    "model_output": 0.2148,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1675
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0239
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0165
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0156
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.009
                        }
                      ],
                      "others": 0.0096,
                      "total": 0.2148,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.722091
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.140682
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.086941
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.075719
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.04294
                        }
                      ],
                      "others_margin": 0.0452
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7586873173713684,
                    "model_output": 0.7587,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.526
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.2008
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.049
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0416
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0354
                        }
                      ],
                      "others": -0.0376,
                      "total": 0.7587,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.525993
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.20085
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.049021
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.04158
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.035351
                        }
                      ],
                      "others_margin": -0.037656
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.765637397766113,
                    "model_output": 6.7656,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0706
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0333
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0171
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.0122
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0115
                        }
                      ],
                      "others": -0.0014,
                      "total": 6.7656,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.070558
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.033321
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.017141
                        },
                        {
                          "name": "totalProgression",
                          "margin": 0.012164
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.011517
                        }
                      ],
                      "others_margin": -0.001325
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 24,
                  "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.9975, quality 0.457)",
              "stats": {
                "key_pass": 0.7024,
                "expected_assists": 0.1067,
                "assists": 0.1282,
                "assist_rate": 0.1282,
                "expected_goals": 0.0685,
                "goals": 0.095,
                "goal_rate": 0.095,
                "shots_on_target": 0.2142,
                "total_shots": 0.7568,
                "rating": 6.7656,
                "minutes": 22.21,
                "total_pass": 9.8887,
                "accurate_pass": 6.9049,
                "duels_won": 1.9281,
                "total_long_balls": 0.3877,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.6091,
                "accurate_own_half_passes": 2.7192,
                "total_opp_half_passes": 6.2797,
                "accurate_opp_half_passes": 4.1858,
                "crosses_total": 1.7061,
                "crosses_accurate": 0.3877,
                "touches": 17.291,
                "possession_lost": 6.0752,
                "dispossessed": 0.0,
                "duels_lost": 1.7148,
                "aerial_won": 0.0,
                "aerial_lost": 0.3296,
                "interceptions": 0.0,
                "tackles_won": 0.6591,
                "tackles": 0.6591,
                "clearances": 0.6679,
                "total_contest": 1.6654,
                "won_contest": 0.6098,
                "challenges_lost": 0.0,
                "fouls": 0.3296,
                "fouls_drawn": 0.6591,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0294,
                "ball_carries": 4.7393,
                "total_progression": 25.995,
                "progressive_carries": 1.047,
                "shots_off_target": 0.5425
              },
              "params": {
                "market_value_eur": 4600000,
                "quality_factor": 0.4572,
                "boost_factor": 0.9975,
                "reference_quality": 0.505,
                "history_matches": 24,
                "history_shrink": 0.1724,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0179)",
              "stats": {
                "key_pass": 0.7024,
                "expected_assists": 0.1067,
                "assists": 0.1277,
                "assist_rate": 0.1277,
                "expected_goals": 0.0685,
                "goals": 0.0933,
                "goal_rate": 0.0933,
                "shots_on_target": 0.2122,
                "total_shots": 0.7507,
                "rating": 6.7656,
                "minutes": 22.21,
                "total_pass": 9.8887,
                "accurate_pass": 6.9049,
                "duels_won": 1.9281,
                "total_long_balls": 0.3877,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.6091,
                "accurate_own_half_passes": 2.7192,
                "total_opp_half_passes": 6.2797,
                "accurate_opp_half_passes": 4.1858,
                "crosses_total": 1.6903,
                "crosses_accurate": 0.3877,
                "touches": 17.291,
                "possession_lost": 6.0752,
                "dispossessed": 0.0,
                "duels_lost": 1.7148,
                "aerial_won": 0.0,
                "aerial_lost": 0.3296,
                "interceptions": 0.0055,
                "tackles_won": 0.6491,
                "tackles": 0.6591,
                "clearances": 0.6679,
                "total_contest": 1.6654,
                "won_contest": 0.6098,
                "challenges_lost": 0.0,
                "fouls": 0.3274,
                "fouls_drawn": 0.6491,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0294,
                "ball_carries": 4.7393,
                "total_progression": 25.995,
                "progressive_carries": 1.047,
                "shots_off_target": 0.5425
              },
              "params": {
                "blend_weight": 0.0179,
                "history_matches": 24,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2468,
                "prior_reliability": 0.16,
                "competition": "La Liga",
                "squad": "Alavés"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 1.7061,
                  "after": 1.6903
                },
                {
                  "stat": "wonTackle",
                  "before": 0.6591,
                  "after": 0.6491
                },
                {
                  "stat": "wasFouled",
                  "before": 0.6591,
                  "after": 0.6491
                },
                {
                  "stat": "totalShots",
                  "before": 0.7568,
                  "after": 0.7507
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.0,
                  "after": 0.0055
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 22.2 to 22.1 expected minutes (appearance prob 0.31)",
              "stats": {
                "key_pass": 0.6974,
                "expected_assists": 0.1059,
                "assists": 0.1268,
                "assist_rate": 0.1268,
                "expected_goals": 0.068,
                "goals": 0.0926,
                "goal_rate": 0.0926,
                "shots_on_target": 0.2107,
                "total_shots": 0.7493,
                "rating": 6.7656,
                "minutes": 22.05,
                "total_pass": 9.8178,
                "accurate_pass": 6.8554,
                "duels_won": 1.9143,
                "total_long_balls": 0.3849,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.5832,
                "accurate_own_half_passes": 2.6997,
                "total_opp_half_passes": 6.2347,
                "accurate_opp_half_passes": 4.1558,
                "crosses_total": 1.6782,
                "crosses_accurate": 0.3849,
                "touches": 17.167,
                "possession_lost": 6.0316,
                "dispossessed": 0.0,
                "duels_lost": 1.7025,
                "aerial_won": 0.0,
                "aerial_lost": 0.3296,
                "interceptions": 0.0055,
                "tackles_won": 0.6444,
                "tackles": 0.6544,
                "clearances": 0.6631,
                "total_contest": 1.6535,
                "won_contest": 0.6054,
                "challenges_lost": 0.0,
                "fouls": 0.3251,
                "fouls_drawn": 0.6444,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0292,
                "ball_carries": 4.7053,
                "total_progression": 25.8086,
                "progressive_carries": 1.0395,
                "shots_off_target": 0.5386,
                "bench_appearance_probability": 0.309,
                "bench_expected_minutes": 22.05
              },
              "params": {
                "expected_minutes": 22.05,
                "projection_minutes": 22.21,
                "minutes_scale": 0.9928,
                "appearance_probability": 0.309
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6974,
                "expected_assists": 0.1059,
                "assists": 0.1268,
                "assist_rate": 0.1268,
                "expected_goals": 0.068,
                "goals": 0.0926,
                "goal_rate": 0.0926,
                "shots_on_target": 0.2107,
                "total_shots": 0.7493,
                "rating": 6.7656,
                "minutes": 22.05,
                "total_pass": 9.8178,
                "accurate_pass": 6.8554,
                "duels_won": 1.9143,
                "total_long_balls": 0.3849,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.5832,
                "accurate_own_half_passes": 2.6997,
                "total_opp_half_passes": 6.2347,
                "accurate_opp_half_passes": 4.1558,
                "crosses_total": 1.6782,
                "crosses_accurate": 0.3849,
                "touches": 17.167,
                "possession_lost": 6.0316,
                "dispossessed": 0.0,
                "duels_lost": 1.7025,
                "aerial_won": 0.0,
                "aerial_lost": 0.3296,
                "interceptions": 0.0055,
                "tackles_won": 0.6444,
                "tackles": 0.6544,
                "clearances": 0.6631,
                "total_contest": 1.6535,
                "won_contest": 0.6054,
                "challenges_lost": 0.0,
                "fouls": 0.3251,
                "fouls_drawn": 0.6444,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0292,
                "ball_carries": 4.7053,
                "total_progression": 25.8086,
                "progressive_carries": 1.0395,
                "shots_off_target": 0.5386,
                "bench_appearance_probability": 0.309,
                "bench_expected_minutes": 22.05
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "key_pass": 0.6974,
                "expected_assists": 0.1059,
                "assist_rate": 0.1268,
                "assists": 0,
                "expected_goals": 0.068,
                "goal_rate": 0.0926,
                "goals": 0,
                "shots_on_target": 0.2107,
                "total_shots": 0.7493,
                "rating": 6.7656,
                "minutes": 22.05,
                "total_pass": 9.8178,
                "accurate_pass": 6.8554,
                "duels_won": 1.9143,
                "total_long_balls": 0.3849,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.5832,
                "accurate_own_half_passes": 2.6997,
                "total_opp_half_passes": 6.2347,
                "accurate_opp_half_passes": 4.1558,
                "crosses_total": 1.6782,
                "crosses_accurate": 0.3849,
                "touches": 17.167,
                "possession_lost": 6.0316,
                "dispossessed": 0.0,
                "duels_lost": 1.7025,
                "aerial_won": 0.0,
                "aerial_lost": 0.3296,
                "interceptions": 0.0055,
                "tackles_won": 0.6444,
                "tackles": 0.6544,
                "clearances": 0.6631,
                "total_contest": 1.6535,
                "won_contest": 0.6054,
                "challenges_lost": 0.0,
                "fouls": 0.3251,
                "fouls_drawn": 0.6444,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0292,
                "ball_carries": 4.7053,
                "total_progression": 25.8086,
                "progressive_carries": 1.0395,
                "shots_off_target": 0.5386,
                "bench_appearance_probability": 0.309,
                "bench_expected_minutes": 22.05,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.309,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 72.0)",
              "stats": {
                "key_pass": 0.6974,
                "expected_assists": 0.1059,
                "assist_rate": 0.1268,
                "assists": 0,
                "expected_goals": 0.068,
                "goal_rate": 0.0926,
                "goals": 0,
                "shots_on_target": 0.2107,
                "total_shots": 0.7493,
                "rating": 6.7656,
                "minutes": 22.05,
                "total_pass": 9.8178,
                "accurate_pass": 6.8554,
                "duels_won": 1.9143,
                "total_long_balls": 0.3849,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.5832,
                "accurate_own_half_passes": 2.6997,
                "total_opp_half_passes": 6.2347,
                "accurate_opp_half_passes": 4.1558,
                "crosses_total": 1.6782,
                "crosses_accurate": 0.3849,
                "touches": 17.167,
                "possession_lost": 6.0316,
                "dispossessed": 0.0,
                "duels_lost": 1.7025,
                "aerial_won": 0.0,
                "aerial_lost": 0.3296,
                "interceptions": 0.0055,
                "tackles_won": 0.6444,
                "tackles": 0.6544,
                "clearances": 0.6631,
                "total_contest": 1.6535,
                "won_contest": 0.6054,
                "challenges_lost": 0.0,
                "fouls": 0.3251,
                "fouls_drawn": 0.6444,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0292,
                "ball_carries": 4.7053,
                "total_progression": 25.8086,
                "progressive_carries": 1.0395,
                "shots_off_target": 0.5386,
                "bench_appearance_probability": 0.309,
                "bench_expected_minutes": 22.05,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4209,
                "fifa_rank": 4243.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            }
          ]
        },
        "Carles Aleñá": {
          "player_id": 794937,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 180,
          "market_value": 2800000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0239,
            "assist_rate": 0.0416,
            "assists": 0,
            "expected_goals": 0.014,
            "goal_rate": 0.0356,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7174,
            "minutes": 13,
            "total_pass": 7,
            "accurate_pass": 7,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 11,
            "possession_lost": 2.5503,
            "dispossessed": 0.8022,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0007,
            "ball_carries": 3,
            "total_progression": 4,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.692,
            "bench_expected_minutes": 13.19,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.426,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0139,
            "projected_assists": 0,
            "assist_probability": 0.0235,
            "finishing_factor": 1.1031,
            "creation_factor": 1.1049,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 11,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0065,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 23,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 5,
                "tackles": 1,
                "tackles_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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 71,
                "rating": 6.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0901,
                "expected_assists": 0.0221,
                "total_shots": 1,
                "total_pass": 30,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 10,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0106,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "tackles_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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0174,
                "expected_assists": 0.0054,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 9,
                "accurate_pass": 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": 14083364,
              "match_date": "2026-05-02",
              "home_team": "Deportivo Alavés",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 17,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0495,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 7,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083202,
              "match_date": "2026-04-25",
              "home_team": "Deportivo Alavés",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 63,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0271,
                "expected_assists": 0.1834,
                "total_shots": 1,
                "total_pass": 23,
                "accurate_pass": 18,
                "key_pass": 3,
                "tackles": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083295,
              "match_date": "2026-04-21",
              "home_team": "Real Madrid",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 32,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1123,
                "expected_assists": 0.1614,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 27,
                "accurate_pass": 25,
                "key_pass": 2,
                "duels_won": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083152,
              "match_date": "2026-04-11",
              "home_team": "Real Sociedad",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0446,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 17,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2212,
            "combined_rank_score": 1041.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1260.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7174,
            "source_file": "data/player_rankings.csv",
            "player_name": "Carles Aleñá",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Darko Velkovski",
                  "ranking": 2207
                },
                {
                  "player_name": "Sandro Wieser",
                  "ranking": 2208
                },
                {
                  "player_name": "Zafar Sadullayev",
                  "ranking": 2209
                },
                {
                  "player_name": "Tyrell Malacia",
                  "ranking": 2210
                },
                {
                  "player_name": "Yeremay Hernández",
                  "ranking": 2211
                }
              ],
              "lower": [
                {
                  "player_name": "Jorge Cestero",
                  "ranking": 2213
                },
                {
                  "player_name": "Wallace Yan",
                  "ranking": 2214
                },
                {
                  "player_name": "Behruz Uktamov",
                  "ranking": 2215
                },
                {
                  "player_name": "Ilkhomzhon Kenzhaev",
                  "ranking": 2216
                },
                {
                  "player_name": "Ravshanbek Yagudin",
                  "ranking": 2217
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.751,
          "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.751,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 13.19,
            "bench_appearance_prob": 0.692,
            "market_value_adjustment": 0.9977,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 6.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0067
            },
            "rationale": "Bench projection scaled from XGBoost M_service (40 historical appearances) to 13.2 expected mins (appearance prob 0.69); FBref playing time empirical prior: 2.0 sub appearances, 6.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.425,
                "expected_assists": 0.0455,
                "assists": 0.0575,
                "assist_rate": 0.0575,
                "expected_goals": 0.038,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "shots_on_target": 0.1406,
                "total_shots": 0.4728,
                "rating": 6.7174,
                "minutes": 18.18,
                "total_pass": 10.3258,
                "accurate_pass": 9.0704,
                "duels_won": 0.9854,
                "total_long_balls": 0.467,
                "accurate_long_balls": 0.3216,
                "total_own_half_passes": 2.4329,
                "accurate_own_half_passes": 2.2796,
                "total_opp_half_passes": 7.8929,
                "accurate_opp_half_passes": 6.7908,
                "crosses_total": 1.4543,
                "crosses_accurate": 0.2959,
                "touches": 15.2867,
                "possession_lost": 3.5232,
                "dispossessed": 0.804,
                "duels_lost": 1.4241,
                "aerial_won": 0.0,
                "aerial_lost": 0.2203,
                "interceptions": 0.0,
                "tackles_won": 0.2812,
                "tackles": 0.3531,
                "clearances": 0.0196,
                "total_contest": 0.3506,
                "won_contest": 0.149,
                "challenges_lost": 0.0271,
                "fouls": 0.171,
                "fouls_drawn": 0.4833,
                "blocks": 0.0,
                "big_chances_created": 0.1386,
                "big_chances_missed": 0.0,
                "xgot": 0.0018,
                "ball_carries": 4.2971,
                "total_progression": 5.2545,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3322
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1502,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Athletic Club",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Mallorca",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Real Madrid",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Real Sociedad",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.4825,
                  "creative_index": 0.2918,
                  "expectedGoals": 0.0343,
                  "expectedAssists": 0.0452,
                  "onTargetScoringAttempt": 0.0966
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.4249560534954071,
                    "model_output": 0.425,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4584
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0277
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0217
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0202
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0139
                        }
                      ],
                      "others": 0.0057,
                      "total": 0.425,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.720164
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.065952
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.054844
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.051233
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.033673
                        }
                      ],
                      "others_margin": 0.013474
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.045480646193027496,
                    "model_output": 0.0455,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0376
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0082
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0045
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0039
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0032
                        }
                      ],
                      "others": -0.0055,
                      "total": 0.0455,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.578704
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.158531
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.083626
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.078692
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.06436
                        }
                      ],
                      "others_margin": -0.114737
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.057486604899168015,
                    "model_output": 0.0575,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0237
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0076
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0058
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0054
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0055
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.0575,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.317499
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.127777
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.108637
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.101915
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.093928
                        }
                      ],
                      "others_margin": -0.059061
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.038038454949855804,
                    "model_output": 0.038,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0433
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0084
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0053
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0033
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0015
                        }
                      ],
                      "others": -0.0051,
                      "total": 0.038,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.613972
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.180764
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.117212
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.07101
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.034276
                        }
                      ],
                      "others_margin": -0.12502
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.049080781638622284,
                    "model_output": 0.0491,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0382
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.009
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0041
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0039
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0037
                        }
                      ],
                      "others": -0.005,
                      "total": 0.0491,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.495177
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.163626
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.084469
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.080044
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.071734
                        }
                      ],
                      "others_margin": -0.097847
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14060193300247192,
                    "model_output": 0.1406,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1419
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0393
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0268
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0181
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0047
                        }
                      ],
                      "others": 0.0001,
                      "total": 0.1406,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.572218
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.240649
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.205277
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.143246
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.034301
                        }
                      ],
                      "others_margin": 0.000463
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.47275832295417786,
                    "model_output": 0.4728,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3994
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1982
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0778
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0342
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0208
                        }
                      ],
                      "others": -0.0579,
                      "total": 0.4728,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.399358
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.198221
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.077768
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.034211
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.020797
                        }
                      ],
                      "others_margin": -0.057974
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.717392444610596,
                    "model_output": 6.7174,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0902
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0424
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0419
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0307
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.012
                        }
                      ],
                      "others": -0.0039,
                      "total": 6.7174,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.090249
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.042356
                        },
                        {
                          "name": "rating",
                          "margin": -0.041863
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.030682
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.012024
                        }
                      ],
                      "others_margin": -0.003903
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 40,
                  "role_matches": 16,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9977, quality 0.437)",
              "stats": {
                "key_pass": 0.424,
                "expected_assists": 0.0454,
                "assists": 0.0574,
                "assist_rate": 0.0574,
                "expected_goals": 0.038,
                "goals": 0.049,
                "goal_rate": 0.049,
                "shots_on_target": 0.1403,
                "total_shots": 0.4717,
                "rating": 6.7174,
                "minutes": 18.18,
                "total_pass": 10.3021,
                "accurate_pass": 9.0495,
                "duels_won": 0.9831,
                "total_long_balls": 0.4659,
                "accurate_long_balls": 0.3209,
                "total_own_half_passes": 2.4273,
                "accurate_own_half_passes": 2.2744,
                "total_opp_half_passes": 7.8747,
                "accurate_opp_half_passes": 6.7752,
                "crosses_total": 1.451,
                "crosses_accurate": 0.2952,
                "touches": 15.2515,
                "possession_lost": 3.5151,
                "dispossessed": 0.8022,
                "duels_lost": 1.4208,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2806,
                "tackles": 0.3523,
                "clearances": 0.0196,
                "total_contest": 0.3498,
                "won_contest": 0.1487,
                "challenges_lost": 0.027,
                "fouls": 0.1706,
                "fouls_drawn": 0.4822,
                "blocks": 0.0,
                "big_chances_created": 0.1383,
                "big_chances_missed": 0.0,
                "xgot": 0.0018,
                "ball_carries": 4.2872,
                "total_progression": 5.2424,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3314
              },
              "params": {
                "market_value_eur": 2800000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9977,
                "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.0005)",
              "stats": {
                "key_pass": 0.424,
                "expected_assists": 0.0454,
                "assists": 0.0574,
                "assist_rate": 0.0574,
                "expected_goals": 0.038,
                "goals": 0.049,
                "goal_rate": 0.049,
                "shots_on_target": 0.141,
                "total_shots": 0.4722,
                "rating": 6.7174,
                "minutes": 18.18,
                "total_pass": 10.3021,
                "accurate_pass": 9.0495,
                "duels_won": 0.9831,
                "total_long_balls": 0.4659,
                "accurate_long_balls": 0.3209,
                "total_own_half_passes": 2.4273,
                "accurate_own_half_passes": 2.2744,
                "total_opp_half_passes": 7.8747,
                "accurate_opp_half_passes": 6.7752,
                "crosses_total": 1.4523,
                "crosses_accurate": 0.2952,
                "touches": 15.2515,
                "possession_lost": 3.5151,
                "dispossessed": 0.8022,
                "duels_lost": 1.4208,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2814,
                "tackles": 0.3523,
                "clearances": 0.0196,
                "total_contest": 0.3498,
                "won_contest": 0.1487,
                "challenges_lost": 0.027,
                "fouls": 0.1705,
                "fouls_drawn": 0.482,
                "blocks": 0.0,
                "big_chances_created": 0.1383,
                "big_chances_missed": 0.0,
                "xgot": 0.0018,
                "ball_carries": 4.2872,
                "total_progression": 5.2424,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3314
              },
              "params": {
                "blend_weight": 0.0005,
                "history_matches": 40,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.202,
                "prior_reliability": 0.0067,
                "competition": "La Liga",
                "squad": "Alavés"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.2 to 13.2 expected minutes (appearance prob 0.69)",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0329,
                "assists": 0.0416,
                "assist_rate": 0.0416,
                "expected_goals": 0.0276,
                "goals": 0.0356,
                "goal_rate": 0.0356,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0013,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19
              },
              "params": {
                "expected_minutes": 13.19,
                "projection_minutes": 18.18,
                "minutes_scale": 0.7255,
                "appearance_probability": 0.692
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0329,
                "assists": 0.0416,
                "assist_rate": 0.0416,
                "expected_goals": 0.0276,
                "goals": 0.0356,
                "goal_rate": 0.0356,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0013,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0329,
                "assist_rate": 0.0416,
                "assists": 0,
                "expected_goals": 0.0276,
                "goal_rate": 0.0356,
                "goals": 0,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0013,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0239,
                "assist_rate": 0.0416,
                "assists": 0,
                "expected_goals": 0.014,
                "goal_rate": 0.0356,
                "goals": 0,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0007,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.1031,
                "creation_factor": 1.1049
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 0.692
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0276,
                  "after": 0.014
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0329,
                  "after": 0.0239
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 78.0)",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0239,
                "assist_rate": 0.0416,
                "assists": 0,
                "expected_goals": 0.014,
                "goal_rate": 0.0356,
                "goals": 0,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0007,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.1031,
                "creation_factor": 1.1049,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 2212,
                "fifa_rank": 1260.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0239,
                "assist_rate": 0.0416,
                "assists": 0,
                "expected_goals": 0.014,
                "goal_rate": 0.0356,
                "goals": 0,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0007,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0139,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1031,
                "creation_factor": 1.1049,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0139,
                "goal_rate": 0.0356,
                "scorer_weight": 0.0154,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0169,
                "finishing_factor": 1.1031,
                "appearance_weight": 0.692,
                "weight_rank": 10,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0239,
                "assist_rate": 0.0416,
                "assists": 0,
                "expected_goals": 0.014,
                "goal_rate": 0.0356,
                "goals": 0,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0007,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0139,
                "projected_assists": 0,
                "assist_probability": 0.0235,
                "finishing_factor": 1.1031,
                "creation_factor": 1.1049,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0235,
                "assist_rate": 0.0416,
                "provider_weight": 0.0264,
                "squad_weight_total": 0.5324,
                "weight_share": 0.0496,
                "creation_factor": 1.1049,
                "appearance_weight": 0.692,
                "weight_rank": 8,
                "eligible_players": 12
              }
            }
          ]
        },
        "Miguel Rodríguez": {
          "player_id": 1014118,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 179,
          "market_value": 4600000,
          "stats": {
            "expected_goals": 0.037,
            "goal_rate": 0.1137,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0231,
            "key_pass": 1,
            "rating": 6.6441,
            "minutes": 25,
            "total_pass": 3,
            "accurate_pass": 2,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 3.1464,
            "dispossessed": 0.7705,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 23,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.562,
            "bench_expected_minutes": 25.37,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.426,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0358,
            "projected_assists": 0,
            "assist_probability": 0.0226,
            "finishing_factor": 1.1726,
            "creation_factor": 0.8,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 11,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0172,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 3,
                "key_pass": 2,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0091,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 12,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1,
                "clearances": 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": 4196,
            "combined_rank_score": 2227.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4258.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6441,
            "source_file": "data/player_rankings.csv",
            "player_name": "Miguel Rodríguez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "José Sosa",
                  "ranking": 4191
                },
                {
                  "player_name": "Jason Knight",
                  "ranking": 4192
                },
                {
                  "player_name": "Pablo Marín",
                  "ranking": 4193
                },
                {
                  "player_name": "Yvan Neyou",
                  "ranking": 4194
                },
                {
                  "player_name": "Sidiki Cherif",
                  "ranking": 4195
                }
              ],
              "lower": [
                {
                  "player_name": "Federico Navarro",
                  "ranking": 4197
                },
                {
                  "player_name": "Yukinari Sugawara",
                  "ranking": 4198
                },
                {
                  "player_name": "Patrick Pentz",
                  "ranking": 4199
                },
                {
                  "player_name": "Álex Sancris",
                  "ranking": 4200
                },
                {
                  "player_name": "Bartosz Slisz",
                  "ranking": 4201
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.37070150421028,
            "bench_appearance_prob": 0.56230461382774,
            "market_value_adjustment": 0.991,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "sub_appearances": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection scaled from XGBoost F_service (3 historical appearances) to 25.4 expected mins (appearance prob 0.56); 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.0603,
                "goals": 0.0765,
                "goal_rate": 0.0765,
                "shots_on_target": 0.213,
                "total_shots": 0.6207,
                "expected_assists": 0.0264,
                "key_pass": 0.3796,
                "rating": 6.6441,
                "minutes": 12.79,
                "total_pass": 2.1662,
                "accurate_pass": 1.4966,
                "duels_won": 0.7775,
                "total_long_balls": 0.3304,
                "accurate_long_balls": 0.3304,
                "total_opp_half_passes": 2.1662,
                "accurate_opp_half_passes": 1.4966,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 5.449,
                "possession_lost": 2.1166,
                "dispossessed": 0.7775,
                "duels_lost": 1.0583,
                "aerial_lost": 0.2809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.1662,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.3887,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3887,
                "tackles": 0.3887,
                "clearances": 0.2809,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.8853,
                "total_progression": 15.6129,
                "progressive_carries": 0.3887,
                "shots_off_target": 0.4077
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 2.1662,
                  "expectedGoals": 0.0,
                  "accurateOppositionHalfPasses": 1.4966,
                  "accuratePass": 1.4966,
                  "totalShots": 0.0
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0602760910987854,
                    "model_output": 0.0603,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0792
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.021
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0103
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0049
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.0174,
                      "total": 0.0603,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.512312
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.194851
                        },
                        {
                          "name": "goals",
                          "margin": -0.112157
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.058522
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.054944
                        }
                      ],
                      "others_margin": -0.254117
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07646875828504562,
                    "model_output": 0.0765,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0699
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0223
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0098
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0071
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0061
                        }
                      ],
                      "others": -0.0117,
                      "total": 0.0765,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.421303
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.183304
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.092811
                        },
                        {
                          "name": "goals",
                          "margin": -0.072725
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.067331
                        }
                      ],
                      "others_margin": -0.14061
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.21304082870483398,
                    "model_output": 0.213,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2121
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0276
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0181
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0162
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0113
                        }
                      ],
                      "others": -0.0393,
                      "total": 0.213,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.501562
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.08859
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.062695
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.059538
                        },
                        {
                          "name": "goals",
                          "margin": -0.043671
                        }
                      ],
                      "others_margin": -0.169665
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6207082271575928,
                    "model_output": 0.6207,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.495
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1465
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.056
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0493
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0307
                        }
                      ],
                      "others": -0.0876,
                      "total": 0.6207,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.494977
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.146469
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.055979
                        },
                        {
                          "name": "goals",
                          "margin": -0.049311
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.030662
                        }
                      ],
                      "others_margin": -0.087692
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.026378242298960686,
                    "model_output": 0.0264,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.02
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0101
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0066
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0034
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0017
                        }
                      ],
                      "others": 0.004,
                      "total": 0.0264,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.372947
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.257868
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.215234
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.129894
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.074594
                        }
                      ],
                      "others_margin": 0.160831
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.37961122393608093,
                    "model_output": 0.3796,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2636
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0405
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0372
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0245
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0236
                        }
                      ],
                      "others": -0.0326,
                      "total": 0.3796,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.49659
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.094276
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.086102
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.061062
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.058884
                        }
                      ],
                      "others_margin": -0.082551
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.644114971160889,
                    "model_output": 6.6441,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0624
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0195
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0125
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0119
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0108
                        }
                      ],
                      "others": -0.0448,
                      "total": 6.6441,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.062439
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.01945
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.012502
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.011869
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.01078
                        }
                      ],
                      "others_margin": -0.044749
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9910, quality 0.457)",
              "stats": {
                "expected_goals": 0.0597,
                "goals": 0.0758,
                "goal_rate": 0.0758,
                "shots_on_target": 0.2111,
                "total_shots": 0.6152,
                "expected_assists": 0.0261,
                "key_pass": 0.3762,
                "rating": 6.6441,
                "minutes": 12.79,
                "total_pass": 2.1467,
                "accurate_pass": 1.4831,
                "duels_won": 0.7705,
                "total_long_balls": 0.3274,
                "accurate_long_balls": 0.3274,
                "total_opp_half_passes": 2.1467,
                "accurate_opp_half_passes": 1.4831,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 5.4,
                "possession_lost": 2.0976,
                "dispossessed": 0.7705,
                "duels_lost": 1.0488,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.1557,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.3852,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3852,
                "tackles": 0.3852,
                "clearances": 0.2784,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.8683,
                "total_progression": 15.4724,
                "progressive_carries": 0.3852,
                "shots_off_target": 0.404
              },
              "params": {
                "market_value_eur": 4600000,
                "quality_factor": 0.4572,
                "boost_factor": 0.991,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 12.8 to 25.4 expected minutes (appearance prob 0.56)",
              "stats": {
                "expected_goals": 0.0896,
                "goals": 0.1137,
                "goal_rate": 0.1137,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0392,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37
              },
              "params": {
                "expected_minutes": 25.37,
                "projection_minutes": 12.79,
                "minutes_scale": 1.5,
                "appearance_probability": 0.562
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0896,
                "goals": 0.1137,
                "goal_rate": 0.1137,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0392,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0896,
                "goal_rate": 0.1137,
                "goals": 0,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0392,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.037,
                "goal_rate": 0.1137,
                "goals": 0,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0231,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.1726,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 0.562
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0896,
                  "after": 0.037
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0392,
                  "after": 0.0231
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 72.0)",
              "stats": {
                "expected_goals": 0.037,
                "goal_rate": 0.1137,
                "goals": 0,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0231,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.1726,
                "creation_factor": 0.8,
                "fifa_overall": 72.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": 4196,
                "fifa_rank": 4258.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.037,
                "goal_rate": 0.1137,
                "goals": 0,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0231,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0358,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1726,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0358,
                "goal_rate": 0.1137,
                "scorer_weight": 0.0434,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0476,
                "finishing_factor": 1.1726,
                "appearance_weight": 0.562,
                "weight_rank": 8,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.037,
                "goal_rate": 0.1137,
                "goals": 0,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0231,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0358,
                "projected_assists": 0,
                "assist_probability": 0.0226,
                "finishing_factor": 1.1726,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0226,
                "assist_rate": 0.0,
                "provider_weight": 0.0185,
                "squad_weight_total": 0.5324,
                "weight_share": 0.0347,
                "creation_factor": 0.8,
                "appearance_weight": 0.562,
                "weight_rank": 11,
                "eligible_players": 12
              }
            }
          ]
        },
        "Ibrahim Diabaté": {
          "player_id": 1084043,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 185,
          "market_value": 1400000,
          "stats": {
            "expected_goals": 0.1027,
            "goal_rate": 0.1366,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0078,
            "key_pass": 0,
            "rating": 6.6124,
            "minutes": 25,
            "total_pass": 5,
            "accurate_pass": 3,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 2.8552,
            "dispossessed": 0.2649,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0178,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 3,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.559,
            "bench_expected_minutes": 25.29,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.426,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0807,
                "expected_assists": 0.0028,
                "total_shots": 1,
                "total_pass": 4,
                "accurate_pass": 3,
                "aerial_won": 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"
            },
            {
              "match_id": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 68,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0689,
                "expected_assists": 0.0242,
                "total_shots": 1,
                "total_pass": 11,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083603,
              "match_date": "2026-05-13",
              "home_team": "Deportivo Alavés",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 64,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4045,
                "expected_assists": 0.0006,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 4,
                "accurate_pass": 3,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083578,
              "match_date": "2026-05-09",
              "home_team": "Elche",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Elche",
              "stats": {
                "minutes": 82,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4694,
                "expected_assists": 0.0026,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 5,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083364,
              "match_date": "2026-05-02",
              "home_team": "Deportivo Alavés",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 73,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0456,
                "expected_assists": 0.0113,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 8,
                "key_pass": 1,
                "interceptions": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083202,
              "match_date": "2026-04-25",
              "home_team": "Deportivo Alavés",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 86,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0633,
                "expected_assists": 0.0071,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 13,
                "accurate_pass": 9,
                "clearances": 1,
                "aerial_won": 6,
                "duels_won": 7
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083295,
              "match_date": "2026-04-21",
              "home_team": "Real Madrid",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 24,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0506,
                "expected_assists": 0.0042,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 2,
                "accurate_pass": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083152,
              "match_date": "2026-04-11",
              "home_team": "Real Sociedad",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 60,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3196,
                "expected_assists": 0.0066,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 8,
                "accurate_pass": 7,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081809,
              "match_date": "2026-04-05",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 73,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.186,
                "expected_assists": 0.0074,
                "total_shots": 1,
                "total_pass": 17,
                "accurate_pass": 11,
                "aerial_won": 2,
                "duels_won": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083689,
              "match_date": "2026-03-22",
              "home_team": "Celta Vigo",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1104,
                "expected_assists": 0.0036,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 5,
                "tackles": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 4539,
            "combined_rank_score": 2590.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 883.0,
            "sofascore_rating": 6.54,
            "sofascore_appearances": 10.0,
            "fifa_rank": 4298.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6124,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ibrahim Diabaté",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Patrick Beach",
                  "ranking": 4534
                },
                {
                  "player_name": "Angus Gunn",
                  "ranking": 4535
                },
                {
                  "player_name": "Zakaria Eddahchouri",
                  "ranking": 4536
                },
                {
                  "player_name": "Willy Kambwala",
                  "ranking": 4537
                },
                {
                  "player_name": "Federico Carrizo",
                  "ranking": 4538
                }
              ],
              "lower": [
                {
                  "player_name": "Chuba Akpom",
                  "ranking": 4540
                },
                {
                  "player_name": "Dani Rodríguez",
                  "ranking": 4541
                },
                {
                  "player_name": "Alex Valera",
                  "ranking": 4542
                },
                {
                  "player_name": "Marcos Fernández",
                  "ranking": 4543
                },
                {
                  "player_name": "Ximo Navarro",
                  "ranking": 4544
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 10,
          "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": 10,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.292222187561247,
            "bench_appearance_prob": 0.5587373721618749,
            "market_value_adjustment": 0.9932,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (10 historical appearances) to 25.3 expected mins (appearance prob 0.56)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1385,
                "goals": 0.1843,
                "goal_rate": 0.1843,
                "shots_on_target": 0.3451,
                "total_shots": 0.7552,
                "expected_assists": 0.0106,
                "key_pass": 0.2497,
                "rating": 6.6124,
                "minutes": 33.88,
                "total_pass": 6.9108,
                "accurate_pass": 4.5324,
                "duels_won": 2.8802,
                "total_long_balls": 0.5335,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.2657,
                "accurate_opp_half_passes": 3.3468,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.2952,
                "possession_lost": 3.8509,
                "dispossessed": 0.2667,
                "duels_lost": 1.9459,
                "aerial_lost": 1.2197,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.1927,
                "challenges_lost": 0.0,
                "fouls": 0.4595,
                "fouls_drawn": 0.5806,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.3854,
                "clearances": 0.2667,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0241,
                "offsides": 0.1927,
                "ball_carries": 3.6266,
                "total_progression": 4.2359,
                "progressive_carries": 0.5065,
                "shots_off_target": 0.4101
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Rayo Vallecano",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1868,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Oviedo",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.1588,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "FC Barcelona",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1349,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Elche",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1147,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Athletic Club",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0975,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Mallorca",
                    "minutes": 86.0,
                    "is_starting": false,
                    "weight": 0.0829,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Real Madrid",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.0704,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Real Sociedad",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0599,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-04-05",
                    "opponent": "Osasuna",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0509,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Celta Vigo",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0433,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 10.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 6.5748,
                  "expectedGoals": 0.1811,
                  "accurateOppositionHalfPasses": 3.4954,
                  "accuratePass": 4.9651,
                  "totalShots": 1.5107
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.13851366937160492,
                    "model_output": 0.1385,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0893
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0085
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0063
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0057
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0044
                        }
                      ],
                      "others": 0.0168,
                      "total": 0.1385,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.601968
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.07534
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.052971
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.047318
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.036444
                        }
                      ],
                      "others_margin": 0.129662
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.1843021661043167,
                    "model_output": 0.1843,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0732
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0138
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0116
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0087
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0083
                        }
                      ],
                      "others": 0.0117,
                      "total": 0.1843,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.446291
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.100465
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.077462
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.054254
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.049342
                        }
                      ],
                      "others_margin": 0.066379
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.34510526061058044,
                    "model_output": 0.3451,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2221
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0125
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0113
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0109
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0098
                        }
                      ],
                      "others": 0.0265,
                      "total": 0.3451,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.532852
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.038781
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.033932
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.032629
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.030286
                        }
                      ],
                      "others_margin": 0.079697
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7551767230033875,
                    "model_output": 0.7552,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.6138
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0589
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0259
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0258
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0211
                        }
                      ],
                      "others": -0.0849,
                      "total": 0.7552,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.61378
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.058899
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.025928
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.025825
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.021069
                        }
                      ],
                      "others_margin": -0.084954
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.010559777729213238,
                    "model_output": 0.0106,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.023
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0086
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0054
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0027
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0023
                        }
                      ],
                      "others": -0.0116,
                      "total": 0.0106,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.442591
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.234166
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.181888
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.106198
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.096923
                        }
                      ],
                      "others_margin": -0.743426
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.2496568262577057,
                    "model_output": 0.2497,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2653
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0307
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0249
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0164
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0135
                        }
                      ],
                      "others": -0.0729,
                      "total": 0.2497,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.500908
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.078345
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.068178
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.047799
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.041125
                        }
                      ],
                      "others_margin": -0.255851
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.612358570098877,
                    "model_output": 6.6124,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0558
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0187
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0136
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0126
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0121
                        }
                      ],
                      "others": -0.067,
                      "total": 6.6124,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.055803
                        },
                        {
                          "name": "rating",
                          "margin": -0.018719
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.013591
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.012589
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.012093
                        }
                      ],
                      "others_margin": -0.067028
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 10,
                  "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.9932, quality 0.437)",
              "stats": {
                "expected_goals": 0.1376,
                "goals": 0.183,
                "goal_rate": 0.183,
                "shots_on_target": 0.3428,
                "total_shots": 0.7501,
                "expected_assists": 0.0105,
                "key_pass": 0.248,
                "rating": 6.6124,
                "minutes": 33.88,
                "total_pass": 6.8638,
                "accurate_pass": 4.5016,
                "duels_won": 2.8606,
                "total_long_balls": 0.5299,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.2299,
                "accurate_opp_half_passes": 3.324,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.2116,
                "possession_lost": 3.8247,
                "dispossessed": 0.2649,
                "duels_lost": 1.9327,
                "aerial_lost": 1.2114,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.1914,
                "challenges_lost": 0.0,
                "fouls": 0.4564,
                "fouls_drawn": 0.5767,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.3828,
                "clearances": 0.2649,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0239,
                "offsides": 0.1914,
                "ball_carries": 3.6019,
                "total_progression": 4.2071,
                "progressive_carries": 0.5031,
                "shots_off_target": 0.4073
              },
              "params": {
                "market_value_eur": 1400000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9932,
                "reference_quality": 0.505,
                "history_matches": 10,
                "history_shrink": 0.3333,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 33.9 to 25.3 expected minutes (appearance prob 0.56)",
              "stats": {
                "expected_goals": 0.1027,
                "goals": 0.1366,
                "goal_rate": 0.1366,
                "shots_on_target": 0.2559,
                "total_shots": 0.56,
                "expected_assists": 0.0078,
                "key_pass": 0.1851,
                "rating": 6.6124,
                "minutes": 25.29,
                "total_pass": 5.124,
                "accurate_pass": 3.3606,
                "duels_won": 2.1355,
                "total_long_balls": 0.3956,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.9042,
                "accurate_opp_half_passes": 2.4814,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.1162,
                "possession_lost": 2.8552,
                "dispossessed": 0.2649,
                "duels_lost": 1.4428,
                "aerial_lost": 1.2114,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.1429,
                "challenges_lost": 0.0,
                "fouls": 0.3407,
                "fouls_drawn": 0.4305,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.2858,
                "clearances": 0.1978,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0178,
                "offsides": 0.1914,
                "ball_carries": 2.6889,
                "total_progression": 3.1407,
                "progressive_carries": 0.3756,
                "shots_off_target": 0.3041,
                "bench_appearance_probability": 0.559,
                "bench_expected_minutes": 25.29
              },
              "params": {
                "expected_minutes": 25.29,
                "projection_minutes": 33.88,
                "minutes_scale": 0.7465,
                "appearance_probability": 0.559
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1027,
                "goals": 0.1366,
                "goal_rate": 0.1366,
                "shots_on_target": 0.2559,
                "total_shots": 0.56,
                "expected_assists": 0.0078,
                "key_pass": 0.1851,
                "rating": 6.6124,
                "minutes": 25.29,
                "total_pass": 5.124,
                "accurate_pass": 3.3606,
                "duels_won": 2.1355,
                "total_long_balls": 0.3956,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.9042,
                "accurate_opp_half_passes": 2.4814,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.1162,
                "possession_lost": 2.8552,
                "dispossessed": 0.2649,
                "duels_lost": 1.4428,
                "aerial_lost": 1.2114,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.1429,
                "challenges_lost": 0.0,
                "fouls": 0.3407,
                "fouls_drawn": 0.4305,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.2858,
                "clearances": 0.1978,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0178,
                "offsides": 0.1914,
                "ball_carries": 2.6889,
                "total_progression": 3.1407,
                "progressive_carries": 0.3756,
                "shots_off_target": 0.3041,
                "bench_appearance_probability": 0.559,
                "bench_expected_minutes": 25.29
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "expected_goals": 0.1027,
                "goal_rate": 0.1366,
                "goals": 0,
                "shots_on_target": 0.2559,
                "total_shots": 0.56,
                "expected_assists": 0.0078,
                "key_pass": 0.1851,
                "rating": 6.6124,
                "minutes": 25.29,
                "total_pass": 5.124,
                "accurate_pass": 3.3606,
                "duels_won": 2.1355,
                "total_long_balls": 0.3956,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.9042,
                "accurate_opp_half_passes": 2.4814,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.1162,
                "possession_lost": 2.8552,
                "dispossessed": 0.2649,
                "duels_lost": 1.4428,
                "aerial_lost": 1.2114,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.1429,
                "challenges_lost": 0.0,
                "fouls": 0.3407,
                "fouls_drawn": 0.4305,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.2858,
                "clearances": 0.1978,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0178,
                "offsides": 0.1914,
                "ball_carries": 2.6889,
                "total_progression": 3.1407,
                "progressive_carries": 0.3756,
                "shots_off_target": 0.3041,
                "bench_appearance_probability": 0.559,
                "bench_expected_minutes": 25.29,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.559,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 72.0)",
              "stats": {
                "expected_goals": 0.1027,
                "goal_rate": 0.1366,
                "goals": 0,
                "shots_on_target": 0.2559,
                "total_shots": 0.56,
                "expected_assists": 0.0078,
                "key_pass": 0.1851,
                "rating": 6.6124,
                "minutes": 25.29,
                "total_pass": 5.124,
                "accurate_pass": 3.3606,
                "duels_won": 2.1355,
                "total_long_balls": 0.3956,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.9042,
                "accurate_opp_half_passes": 2.4814,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.1162,
                "possession_lost": 2.8552,
                "dispossessed": 0.2649,
                "duels_lost": 1.4428,
                "aerial_lost": 1.2114,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.1429,
                "challenges_lost": 0.0,
                "fouls": 0.3407,
                "fouls_drawn": 0.4305,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.2858,
                "clearances": 0.1978,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0178,
                "offsides": 0.1914,
                "ball_carries": 2.6889,
                "total_progression": 3.1407,
                "progressive_carries": 0.3756,
                "shots_off_target": 0.3041,
                "bench_appearance_probability": 0.559,
                "bench_expected_minutes": 25.29,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4539,
                "fifa_rank": 4298.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            }
          ]
        }
      },
      "substitutes": {
        "Carles Aleñá": {
          "player_id": 794937,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 180,
          "market_value": 2800000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0239,
            "assist_rate": 0.0416,
            "assists": 0,
            "expected_goals": 0.014,
            "goal_rate": 0.0356,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7174,
            "minutes": 13,
            "total_pass": 7,
            "accurate_pass": 7,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 11,
            "possession_lost": 2.5503,
            "dispossessed": 0.8022,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0007,
            "ball_carries": 3,
            "total_progression": 4,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.692,
            "bench_expected_minutes": 13.19,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.426,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0139,
            "projected_assists": 0,
            "assist_probability": 0.0235,
            "finishing_factor": 1.1031,
            "creation_factor": 1.1049,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16416337,
              "match_date": "2026-09-19",
              "home_team": "Athletic Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 11,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0065,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 23,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 5,
                "tackles": 1,
                "tackles_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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 71,
                "rating": 6.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0901,
                "expected_assists": 0.0221,
                "total_shots": 1,
                "total_pass": 30,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 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": 16416292,
              "match_date": "2026-08-20",
              "home_team": "Rayo Vallecano",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 10,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0106,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "tackles_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": 16421047,
              "match_date": "2026-08-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Getafe",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0174,
                "expected_assists": 0.0054,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 9,
                "accurate_pass": 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": 14083364,
              "match_date": "2026-05-02",
              "home_team": "Deportivo Alavés",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 17,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0495,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 7,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083202,
              "match_date": "2026-04-25",
              "home_team": "Deportivo Alavés",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Deportivo Alavés",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 63,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0271,
                "expected_assists": 0.1834,
                "total_shots": 1,
                "total_pass": 23,
                "accurate_pass": 18,
                "key_pass": 3,
                "tackles": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083295,
              "match_date": "2026-04-21",
              "home_team": "Real Madrid",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 32,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1123,
                "expected_assists": 0.1614,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 27,
                "accurate_pass": 25,
                "key_pass": 2,
                "duels_won": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083152,
              "match_date": "2026-04-11",
              "home_team": "Real Sociedad",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0446,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 17,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2212,
            "combined_rank_score": 1041.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1260.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7174,
            "source_file": "data/player_rankings.csv",
            "player_name": "Carles Aleñá",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Darko Velkovski",
                  "ranking": 2207
                },
                {
                  "player_name": "Sandro Wieser",
                  "ranking": 2208
                },
                {
                  "player_name": "Zafar Sadullayev",
                  "ranking": 2209
                },
                {
                  "player_name": "Tyrell Malacia",
                  "ranking": 2210
                },
                {
                  "player_name": "Yeremay Hernández",
                  "ranking": 2211
                }
              ],
              "lower": [
                {
                  "player_name": "Jorge Cestero",
                  "ranking": 2213
                },
                {
                  "player_name": "Wallace Yan",
                  "ranking": 2214
                },
                {
                  "player_name": "Behruz Uktamov",
                  "ranking": 2215
                },
                {
                  "player_name": "Ilkhomzhon Kenzhaev",
                  "ranking": 2216
                },
                {
                  "player_name": "Ravshanbek Yagudin",
                  "ranking": 2217
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.751,
          "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.751,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 13.19,
            "bench_appearance_prob": 0.692,
            "market_value_adjustment": 0.9977,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 6.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0067
            },
            "rationale": "Bench projection scaled from XGBoost M_service (40 historical appearances) to 13.2 expected mins (appearance prob 0.69); FBref playing time empirical prior: 2.0 sub appearances, 6.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.425,
                "expected_assists": 0.0455,
                "assists": 0.0575,
                "assist_rate": 0.0575,
                "expected_goals": 0.038,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "shots_on_target": 0.1406,
                "total_shots": 0.4728,
                "rating": 6.7174,
                "minutes": 18.18,
                "total_pass": 10.3258,
                "accurate_pass": 9.0704,
                "duels_won": 0.9854,
                "total_long_balls": 0.467,
                "accurate_long_balls": 0.3216,
                "total_own_half_passes": 2.4329,
                "accurate_own_half_passes": 2.2796,
                "total_opp_half_passes": 7.8929,
                "accurate_opp_half_passes": 6.7908,
                "crosses_total": 1.4543,
                "crosses_accurate": 0.2959,
                "touches": 15.2867,
                "possession_lost": 3.5232,
                "dispossessed": 0.804,
                "duels_lost": 1.4241,
                "aerial_won": 0.0,
                "aerial_lost": 0.2203,
                "interceptions": 0.0,
                "tackles_won": 0.2812,
                "tackles": 0.3531,
                "clearances": 0.0196,
                "total_contest": 0.3506,
                "won_contest": 0.149,
                "challenges_lost": 0.0271,
                "fouls": 0.171,
                "fouls_drawn": 0.4833,
                "blocks": 0.0,
                "big_chances_created": 0.1386,
                "big_chances_missed": 0.0,
                "xgot": 0.0018,
                "ball_carries": 4.2971,
                "total_progression": 5.2545,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3322
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-18T10:05:52.292354+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Athletic Club",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1502,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-20",
                    "opponent": "Rayo Vallecano",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-15",
                    "opponent": "Getafe",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Athletic Club",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Mallorca",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Real Madrid",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Real Sociedad",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.4825,
                  "creative_index": 0.2918,
                  "expectedGoals": 0.0343,
                  "expectedAssists": 0.0452,
                  "onTargetScoringAttempt": 0.0966
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.4249560534954071,
                    "model_output": 0.425,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4584
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0277
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0217
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0202
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0139
                        }
                      ],
                      "others": 0.0057,
                      "total": 0.425,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.720164
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.065952
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.054844
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.051233
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.033673
                        }
                      ],
                      "others_margin": 0.013474
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.045480646193027496,
                    "model_output": 0.0455,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0376
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0082
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0045
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0039
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0032
                        }
                      ],
                      "others": -0.0055,
                      "total": 0.0455,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.578704
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.158531
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.083626
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.078692
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.06436
                        }
                      ],
                      "others_margin": -0.114737
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.057486604899168015,
                    "model_output": 0.0575,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0237
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0076
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0058
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0054
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0055
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.0575,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.317499
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.127777
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.108637
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.101915
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.093928
                        }
                      ],
                      "others_margin": -0.059061
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.038038454949855804,
                    "model_output": 0.038,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0433
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0084
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0053
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0033
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0015
                        }
                      ],
                      "others": -0.0051,
                      "total": 0.038,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.613972
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.180764
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.117212
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.07101
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.034276
                        }
                      ],
                      "others_margin": -0.12502
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.049080781638622284,
                    "model_output": 0.0491,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0382
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.009
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0041
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0039
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0037
                        }
                      ],
                      "others": -0.005,
                      "total": 0.0491,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.495177
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.163626
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.084469
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.080044
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.071734
                        }
                      ],
                      "others_margin": -0.097847
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14060193300247192,
                    "model_output": 0.1406,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1419
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0393
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0268
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0181
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0047
                        }
                      ],
                      "others": 0.0001,
                      "total": 0.1406,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.572218
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.240649
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.205277
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.143246
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.034301
                        }
                      ],
                      "others_margin": 0.000463
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.47275832295417786,
                    "model_output": 0.4728,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3994
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1982
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0778
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0342
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0208
                        }
                      ],
                      "others": -0.0579,
                      "total": 0.4728,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.399358
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.198221
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.077768
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.034211
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.020797
                        }
                      ],
                      "others_margin": -0.057974
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.717392444610596,
                    "model_output": 6.7174,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0902
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0424
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0419
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0307
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.012
                        }
                      ],
                      "others": -0.0039,
                      "total": 6.7174,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.090249
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.042356
                        },
                        {
                          "name": "rating",
                          "margin": -0.041863
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.030682
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.012024
                        }
                      ],
                      "others_margin": -0.003903
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 40,
                  "role_matches": 16,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9977, quality 0.437)",
              "stats": {
                "key_pass": 0.424,
                "expected_assists": 0.0454,
                "assists": 0.0574,
                "assist_rate": 0.0574,
                "expected_goals": 0.038,
                "goals": 0.049,
                "goal_rate": 0.049,
                "shots_on_target": 0.1403,
                "total_shots": 0.4717,
                "rating": 6.7174,
                "minutes": 18.18,
                "total_pass": 10.3021,
                "accurate_pass": 9.0495,
                "duels_won": 0.9831,
                "total_long_balls": 0.4659,
                "accurate_long_balls": 0.3209,
                "total_own_half_passes": 2.4273,
                "accurate_own_half_passes": 2.2744,
                "total_opp_half_passes": 7.8747,
                "accurate_opp_half_passes": 6.7752,
                "crosses_total": 1.451,
                "crosses_accurate": 0.2952,
                "touches": 15.2515,
                "possession_lost": 3.5151,
                "dispossessed": 0.8022,
                "duels_lost": 1.4208,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2806,
                "tackles": 0.3523,
                "clearances": 0.0196,
                "total_contest": 0.3498,
                "won_contest": 0.1487,
                "challenges_lost": 0.027,
                "fouls": 0.1706,
                "fouls_drawn": 0.4822,
                "blocks": 0.0,
                "big_chances_created": 0.1383,
                "big_chances_missed": 0.0,
                "xgot": 0.0018,
                "ball_carries": 4.2872,
                "total_progression": 5.2424,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3314
              },
              "params": {
                "market_value_eur": 2800000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9977,
                "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.0005)",
              "stats": {
                "key_pass": 0.424,
                "expected_assists": 0.0454,
                "assists": 0.0574,
                "assist_rate": 0.0574,
                "expected_goals": 0.038,
                "goals": 0.049,
                "goal_rate": 0.049,
                "shots_on_target": 0.141,
                "total_shots": 0.4722,
                "rating": 6.7174,
                "minutes": 18.18,
                "total_pass": 10.3021,
                "accurate_pass": 9.0495,
                "duels_won": 0.9831,
                "total_long_balls": 0.4659,
                "accurate_long_balls": 0.3209,
                "total_own_half_passes": 2.4273,
                "accurate_own_half_passes": 2.2744,
                "total_opp_half_passes": 7.8747,
                "accurate_opp_half_passes": 6.7752,
                "crosses_total": 1.4523,
                "crosses_accurate": 0.2952,
                "touches": 15.2515,
                "possession_lost": 3.5151,
                "dispossessed": 0.8022,
                "duels_lost": 1.4208,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2814,
                "tackles": 0.3523,
                "clearances": 0.0196,
                "total_contest": 0.3498,
                "won_contest": 0.1487,
                "challenges_lost": 0.027,
                "fouls": 0.1705,
                "fouls_drawn": 0.482,
                "blocks": 0.0,
                "big_chances_created": 0.1383,
                "big_chances_missed": 0.0,
                "xgot": 0.0018,
                "ball_carries": 4.2872,
                "total_progression": 5.2424,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3314
              },
              "params": {
                "blend_weight": 0.0005,
                "history_matches": 40,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.202,
                "prior_reliability": 0.0067,
                "competition": "La Liga",
                "squad": "Alavés"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.2 to 13.2 expected minutes (appearance prob 0.69)",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0329,
                "assists": 0.0416,
                "assist_rate": 0.0416,
                "expected_goals": 0.0276,
                "goals": 0.0356,
                "goal_rate": 0.0356,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0013,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19
              },
              "params": {
                "expected_minutes": 13.19,
                "projection_minutes": 18.18,
                "minutes_scale": 0.7255,
                "appearance_probability": 0.692
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0329,
                "assists": 0.0416,
                "assist_rate": 0.0416,
                "expected_goals": 0.0276,
                "goals": 0.0356,
                "goal_rate": 0.0356,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0013,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0329,
                "assist_rate": 0.0416,
                "assists": 0,
                "expected_goals": 0.0276,
                "goal_rate": 0.0356,
                "goals": 0,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0013,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0239,
                "assist_rate": 0.0416,
                "assists": 0,
                "expected_goals": 0.014,
                "goal_rate": 0.0356,
                "goals": 0,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0007,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.1031,
                "creation_factor": 1.1049
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 0.692
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0276,
                  "after": 0.014
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0329,
                  "after": 0.0239
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 78.0)",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0239,
                "assist_rate": 0.0416,
                "assists": 0,
                "expected_goals": 0.014,
                "goal_rate": 0.0356,
                "goals": 0,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0007,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.1031,
                "creation_factor": 1.1049,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 2212,
                "fifa_rank": 1260.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0239,
                "assist_rate": 0.0416,
                "assists": 0,
                "expected_goals": 0.014,
                "goal_rate": 0.0356,
                "goals": 0,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0007,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0139,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1031,
                "creation_factor": 1.1049,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0139,
                "goal_rate": 0.0356,
                "scorer_weight": 0.0154,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0169,
                "finishing_factor": 1.1031,
                "appearance_weight": 0.692,
                "weight_rank": 10,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.3076,
                "expected_assists": 0.0239,
                "assist_rate": 0.0416,
                "assists": 0,
                "expected_goals": 0.014,
                "goal_rate": 0.0356,
                "goals": 0,
                "shots_on_target": 0.1023,
                "total_shots": 0.3427,
                "rating": 6.7174,
                "minutes": 13.19,
                "total_pass": 7.4744,
                "accurate_pass": 6.5656,
                "duels_won": 0.7133,
                "total_long_balls": 0.338,
                "accurate_long_balls": 0.2328,
                "total_own_half_passes": 1.7611,
                "accurate_own_half_passes": 1.6501,
                "total_opp_half_passes": 5.7133,
                "accurate_opp_half_passes": 4.9156,
                "crosses_total": 1.0537,
                "crosses_accurate": 0.2142,
                "touches": 11.0653,
                "possession_lost": 2.5503,
                "dispossessed": 0.8022,
                "duels_lost": 1.0308,
                "aerial_won": 0.0,
                "aerial_lost": 0.2198,
                "interceptions": 0.0,
                "tackles_won": 0.2042,
                "tackles": 0.2556,
                "clearances": 0.0142,
                "total_contest": 0.2538,
                "won_contest": 0.1079,
                "challenges_lost": 0.027,
                "fouls": 0.1237,
                "fouls_drawn": 0.3497,
                "blocks": 0.0,
                "big_chances_created": 0.1003,
                "big_chances_missed": 0.0,
                "xgot": 0.0007,
                "ball_carries": 3.1105,
                "total_progression": 3.8035,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2404,
                "bench_appearance_probability": 0.692,
                "bench_expected_minutes": 13.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0139,
                "projected_assists": 0,
                "assist_probability": 0.0235,
                "finishing_factor": 1.1031,
                "creation_factor": 1.1049,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0235,
                "assist_rate": 0.0416,
                "provider_weight": 0.0264,
                "squad_weight_total": 0.5324,
                "weight_share": 0.0496,
                "creation_factor": 1.1049,
                "appearance_weight": 0.692,
                "weight_rank": 8,
                "eligible_players": 12
              }
            }
          ]
        },
        "Miguel Rodríguez": {
          "player_id": 1014118,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 179,
          "market_value": 4600000,
          "stats": {
            "expected_goals": 0.037,
            "goal_rate": 0.1137,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0231,
            "key_pass": 1,
            "rating": 6.6441,
            "minutes": 25,
            "total_pass": 3,
            "accurate_pass": 2,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 3.1464,
            "dispossessed": 0.7705,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 23,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.562,
            "bench_expected_minutes": 25.37,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.426,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0358,
            "projected_assists": 0,
            "assist_probability": 0.0226,
            "finishing_factor": 1.1726,
            "creation_factor": 0.8,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Valencia",
              "stats": {
                "minutes": 11,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0172,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 3,
                "key_pass": 2,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0091,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Deportivo Alavés",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 12,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1,
                "clearances": 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": 4196,
            "combined_rank_score": 2227.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4258.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6441,
            "source_file": "data/player_rankings.csv",
            "player_name": "Miguel Rodríguez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "José Sosa",
                  "ranking": 4191
                },
                {
                  "player_name": "Jason Knight",
                  "ranking": 4192
                },
                {
                  "player_name": "Pablo Marín",
                  "ranking": 4193
                },
                {
                  "player_name": "Yvan Neyou",
                  "ranking": 4194
                },
                {
                  "player_name": "Sidiki Cherif",
                  "ranking": 4195
                }
              ],
              "lower": [
                {
                  "player_name": "Federico Navarro",
                  "ranking": 4197
                },
                {
                  "player_name": "Yukinari Sugawara",
                  "ranking": 4198
                },
                {
                  "player_name": "Patrick Pentz",
                  "ranking": 4199
                },
                {
                  "player_name": "Álex Sancris",
                  "ranking": 4200
                },
                {
                  "player_name": "Bartosz Slisz",
                  "ranking": 4201
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.37070150421028,
            "bench_appearance_prob": 0.56230461382774,
            "market_value_adjustment": 0.991,
            "fbref_prior_metrics": {
              "squad": "Alavés",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "sub_appearances": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection scaled from XGBoost F_service (3 historical appearances) to 25.4 expected mins (appearance prob 0.56); 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.0603,
                "goals": 0.0765,
                "goal_rate": 0.0765,
                "shots_on_target": 0.213,
                "total_shots": 0.6207,
                "expected_assists": 0.0264,
                "key_pass": 0.3796,
                "rating": 6.6441,
                "minutes": 12.79,
                "total_pass": 2.1662,
                "accurate_pass": 1.4966,
                "duels_won": 0.7775,
                "total_long_balls": 0.3304,
                "accurate_long_balls": 0.3304,
                "total_opp_half_passes": 2.1662,
                "accurate_opp_half_passes": 1.4966,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 5.449,
                "possession_lost": 2.1166,
                "dispossessed": 0.7775,
                "duels_lost": 1.0583,
                "aerial_lost": 0.2809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.1662,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.3887,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3887,
                "tackles": 0.3887,
                "clearances": 0.2809,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.8853,
                "total_progression": 15.6129,
                "progressive_carries": 0.3887,
                "shots_off_target": 0.4077
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-18T10:06:22.870916+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Valencia",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Real Racing Club",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Osasuna",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 2.1662,
                  "expectedGoals": 0.0,
                  "accurateOppositionHalfPasses": 1.4966,
                  "accuratePass": 1.4966,
                  "totalShots": 0.0
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0602760910987854,
                    "model_output": 0.0603,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0792
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.021
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0103
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0049
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.0174,
                      "total": 0.0603,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.512312
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.194851
                        },
                        {
                          "name": "goals",
                          "margin": -0.112157
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.058522
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.054944
                        }
                      ],
                      "others_margin": -0.254117
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07646875828504562,
                    "model_output": 0.0765,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0699
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0223
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0098
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0071
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0061
                        }
                      ],
                      "others": -0.0117,
                      "total": 0.0765,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.421303
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.183304
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.092811
                        },
                        {
                          "name": "goals",
                          "margin": -0.072725
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.067331
                        }
                      ],
                      "others_margin": -0.14061
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.21304082870483398,
                    "model_output": 0.213,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2121
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0276
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0181
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0162
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0113
                        }
                      ],
                      "others": -0.0393,
                      "total": 0.213,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.501562
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.08859
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.062695
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.059538
                        },
                        {
                          "name": "goals",
                          "margin": -0.043671
                        }
                      ],
                      "others_margin": -0.169665
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6207082271575928,
                    "model_output": 0.6207,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.495
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1465
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.056
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0493
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0307
                        }
                      ],
                      "others": -0.0876,
                      "total": 0.6207,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.494977
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.146469
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.055979
                        },
                        {
                          "name": "goals",
                          "margin": -0.049311
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.030662
                        }
                      ],
                      "others_margin": -0.087692
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.026378242298960686,
                    "model_output": 0.0264,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.02
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0101
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0066
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0034
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0017
                        }
                      ],
                      "others": 0.004,
                      "total": 0.0264,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.372947
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.257868
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.215234
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.129894
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.074594
                        }
                      ],
                      "others_margin": 0.160831
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.37961122393608093,
                    "model_output": 0.3796,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2636
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0405
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0372
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0245
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0236
                        }
                      ],
                      "others": -0.0326,
                      "total": 0.3796,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.49659
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.094276
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.086102
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.061062
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.058884
                        }
                      ],
                      "others_margin": -0.082551
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.644114971160889,
                    "model_output": 6.6441,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0624
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0195
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0125
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0119
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0108
                        }
                      ],
                      "others": -0.0448,
                      "total": 6.6441,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.062439
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.01945
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.012502
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.011869
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.01078
                        }
                      ],
                      "others_margin": -0.044749
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9910, quality 0.457)",
              "stats": {
                "expected_goals": 0.0597,
                "goals": 0.0758,
                "goal_rate": 0.0758,
                "shots_on_target": 0.2111,
                "total_shots": 0.6152,
                "expected_assists": 0.0261,
                "key_pass": 0.3762,
                "rating": 6.6441,
                "minutes": 12.79,
                "total_pass": 2.1467,
                "accurate_pass": 1.4831,
                "duels_won": 0.7705,
                "total_long_balls": 0.3274,
                "accurate_long_balls": 0.3274,
                "total_opp_half_passes": 2.1467,
                "accurate_opp_half_passes": 1.4831,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 5.4,
                "possession_lost": 2.0976,
                "dispossessed": 0.7705,
                "duels_lost": 1.0488,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.1557,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.3852,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3852,
                "tackles": 0.3852,
                "clearances": 0.2784,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.8683,
                "total_progression": 15.4724,
                "progressive_carries": 0.3852,
                "shots_off_target": 0.404
              },
              "params": {
                "market_value_eur": 4600000,
                "quality_factor": 0.4572,
                "boost_factor": 0.991,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 12.8 to 25.4 expected minutes (appearance prob 0.56)",
              "stats": {
                "expected_goals": 0.0896,
                "goals": 0.1137,
                "goal_rate": 0.1137,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0392,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37
              },
              "params": {
                "expected_minutes": 25.37,
                "projection_minutes": 12.79,
                "minutes_scale": 1.5,
                "appearance_probability": 0.562
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0896,
                "goals": 0.1137,
                "goal_rate": 0.1137,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0392,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0896,
                "goal_rate": 0.1137,
                "goals": 0,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0392,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.85 (squad xG sum 1.1554, xG scale 0.7348, xA scale 1.0488, team xA 0.55 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.037,
                "goal_rate": 0.1137,
                "goals": 0,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0231,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.1726,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.849,
                "squad_xg_sum": 1.1554,
                "squad_xa_sum": 0.5262,
                "team_expected_assists": 0.5518,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 0.7348,
                "xa_scale": 1.0488,
                "opponent_lambda": 0.859,
                "scoreline_reset": true,
                "appearance_weight": 0.562
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0896,
                  "after": 0.037
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0392,
                  "after": 0.0231
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 72.0)",
              "stats": {
                "expected_goals": 0.037,
                "goal_rate": 0.1137,
                "goals": 0,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0231,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "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.1726,
                "creation_factor": 0.8,
                "fifa_overall": 72.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": 4196,
                "fifa_rank": 4258.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.037,
                "goal_rate": 0.1137,
                "goals": 0,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0231,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0358,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1726,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0358,
                "goal_rate": 0.1137,
                "scorer_weight": 0.0434,
                "squad_weight_total": 0.9123,
                "weight_share": 0.0476,
                "finishing_factor": 1.1726,
                "appearance_weight": 0.562,
                "weight_rank": 8,
                "eligible_players": 12
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.037,
                "goal_rate": 0.1137,
                "goals": 0,
                "shots_on_target": 0.3166,
                "total_shots": 0.9228,
                "expected_assists": 0.0231,
                "key_pass": 0.5643,
                "rating": 6.6441,
                "minutes": 25.37,
                "total_pass": 3.2201,
                "accurate_pass": 2.2247,
                "duels_won": 1.1557,
                "total_long_balls": 0.4911,
                "accurate_long_balls": 0.4911,
                "total_opp_half_passes": 3.2201,
                "accurate_opp_half_passes": 2.2247,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.1,
                "possession_lost": 3.1464,
                "dispossessed": 0.7705,
                "duels_lost": 1.5732,
                "aerial_lost": 0.2784,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.7335,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.5778,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.5778,
                "tackles": 0.5778,
                "clearances": 0.4176,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.8025,
                "total_progression": 23.2086,
                "progressive_carries": 0.5778,
                "shots_off_target": 0.606,
                "bench_appearance_probability": 0.562,
                "bench_expected_minutes": 25.37,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.426,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0358,
                "projected_assists": 0,
                "assist_probability": 0.0226,
                "finishing_factor": 1.1726,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0226,
                "assist_rate": 0.0,
                "provider_weight": 0.0185,
                "squad_weight_total": 0.5324,
                "weight_share": 0.0347,
                "creation_factor": 0.8,
                "appearance_weight": 0.562,
                "weight_rank": 11,
                "eligible_players": 12
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 0,
        "expected_goals": 0.85,
        "expected_assists": 0.55,
        "total_shots": 10,
        "shots_on_target": 2,
        "total_passes": 322,
        "interceptions": 7,
        "tackles": 17,
        "avg_rating": 6.81,
        "possession_estimated_pct": 50.7,
        "pressing_actions_per_90": 6.3
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Hugo Burcio",
        "attacker_role": "LWB",
        "attacker_market_value": 1900000,
        "attacker_height": 187,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Ville Koski"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.454,
        "duel_zone": "LWB vs CB",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.413,
        "xg_contribution": 0.0849,
        "xg_multiplier": 0.9894,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Ville Koski",
            "role": "CB",
            "market_value": 4300000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.587
          }
        ],
        "duel_analysis": "Hugo Burcio (LWB) is evenly matched against Ville Koski in a direct 1v1 contest. Duel win probability: 41%.  Matchup xG multiplier ×0.99 (×1.00 = his usual level). Projected xG contribution: 0.085 — with neither side clearly dominant."
      },
      {
        "attacker": "Aleix Febas",
        "attacker_role": "CM",
        "attacker_market_value": 5200000,
        "attacker_height": 168,
        "attacker_skill_quality": 0.465,
        "defenders": [
          "Pablo Ibáñez"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.451,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.411,
        "xg_contribution": 0.0692,
        "xg_multiplier": 0.9431,
        "shots_in_zone": 1.6,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Pablo Ibáñez",
            "role": "CDM",
            "market_value": 4099999,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.2,
            "defensive_success_rate": 0.589
          }
        ],
        "duel_analysis": "Aleix Febas (CM) is evenly matched against Pablo Ibáñez in a direct 1v1 contest. Duel win probability: 41%.  Matchup xG multiplier ×0.94 (×1.00 = his usual level). Projected xG contribution: 0.069 — with neither side clearly dominant."
      },
      {
        "attacker": "Hugo Álvarez",
        "attacker_role": "SS",
        "attacker_market_value": 7800000,
        "attacker_height": 176,
        "attacker_skill_quality": 0.496,
        "defenders": [
          "Ville Koski"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.454,
        "duel_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.425,
        "xg_contribution": 0.1324,
        "xg_multiplier": 0.9637,
        "shots_in_zone": 2.4,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Ville Koski",
            "role": "CB",
            "market_value": 4300000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.575
          }
        ],
        "duel_analysis": "Hugo Álvarez (SS) is evenly matched against Ville Koski in a direct 1v1 contest. Duel win probability: 43%.  Matchup xG multiplier ×0.96 (×1.00 = his usual level). Projected xG contribution: 0.132 — with neither side clearly dominant."
      },
      {
        "attacker": "Ferrán Jutglà",
        "attacker_role": "SS",
        "attacker_market_value": 10700000,
        "attacker_height": 175,
        "attacker_skill_quality": 0.531,
        "defenders": [
          "Ville Koski"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.454,
        "duel_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.437,
        "xg_contribution": 0.1884,
        "xg_multiplier": 0.9805,
        "shots_in_zone": 2.4,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.2,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Ville Koski",
            "role": "CB",
            "market_value": 4300000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.563
          }
        ],
        "duel_analysis": "Ferrán Jutglà (SS) is evenly matched against Ville Koski in a direct 1v1 contest. Duel win probability: 44%.  Matchup xG multiplier ×0.98 (×1.00 = his usual level). Projected xG contribution: 0.188 — with neither side clearly dominant."
      },
      {
        "attacker": "Iago Aspas",
        "attacker_role": "ST",
        "attacker_market_value": 1500000,
        "attacker_height": 176,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Ville Koski",
          "Nahuel Tenaglia"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.447,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.145,
        "xg_multiplier": 0.9395,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.4,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Ville Koski",
            "role": "CB",
            "market_value": 4300000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Nahuel Tenaglia",
            "role": "CB",
            "market_value": 3200000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Iago Aspas (ST) faces tough defensive resistance against Ville Koski and Nahuel Tenaglia in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.94 (×1.00 = his usual level). Projected xG contribution: 0.145 — and is restricted in space and time on the ball."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Jonny Otto",
        "attacker_role": "LWB",
        "attacker_market_value": 2100000,
        "attacker_height": 175,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Yoel Lago"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.487,
        "duel_zone": "LWB vs CB",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.345,
        "xg_contribution": 0.0131,
        "xg_multiplier": 0.8902,
        "shots_in_zone": 0.9,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.6,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Yoel Lago",
            "role": "CB",
            "market_value": 7000000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.7,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.655
          }
        ],
        "duel_analysis": "Jonny Otto (LWB) faces tough defensive resistance against Yoel Lago in a direct 1v1 contest. Duel win probability: 35%.  Matchup xG multiplier ×0.89 (×1.00 = his usual level). Projected xG contribution: 0.013 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Antonio Blanco",
        "attacker_role": "CM",
        "attacker_market_value": 9700000,
        "attacker_height": 176,
        "attacker_skill_quality": 0.519,
        "defenders": [
          "Aleix Febas"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.465,
        "duel_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.479,
        "xg_contribution": 0.0591,
        "xg_multiplier": 1.0866,
        "shots_in_zone": 1.7,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Aleix Febas",
            "role": "CM",
            "market_value": 5200000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.5,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.521
          }
        ],
        "duel_analysis": "Antonio Blanco (CM) is slightly favored against Aleix Febas in a direct 1v1 contest. Duel win probability: 48%.  Matchup xG multiplier ×1.09 (×1.00 = his usual level). Projected xG contribution: 0.059 — creating consistent moderate threat."
      },
      {
        "attacker": "Denis Suárez",
        "attacker_role": "CM",
        "attacker_market_value": 1100000,
        "attacker_height": 176,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Aleix Febas"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.465,
        "duel_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.437,
        "xg_contribution": 0.0886,
        "xg_multiplier": 1.0244,
        "shots_in_zone": 1.6,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Aleix Febas",
            "role": "CM",
            "market_value": 5200000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.563
          }
        ],
        "duel_analysis": "Denis Suárez (CM) is evenly matched against Aleix Febas in a direct 1v1 contest. Duel win probability: 44%.  Matchup xG multiplier ×1.02 (×1.00 = his usual level). Projected xG contribution: 0.089 — with neither side clearly dominant."
      },
      {
        "attacker": "Lucas Boyé",
        "attacker_role": "ST",
        "attacker_market_value": 5300000,
        "attacker_height": 183,
        "attacker_skill_quality": 0.466,
        "defenders": [
          "Yoel Lago",
          "Sebastián Cáceres"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.469,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.185,
        "xg_contribution": 0.2833,
        "xg_multiplier": 0.9773,
        "shots_in_zone": 2.1,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.7,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Yoel Lago",
            "role": "CB",
            "market_value": 7000000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.815
          },
          {
            "player": "Sebastián Cáceres",
            "role": "CB",
            "market_value": 4099999,
            "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.815
          }
        ],
        "duel_analysis": "Lucas Boyé (ST) is evenly matched against Yoel Lago and Sebastián Cáceres in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.98 (×1.00 = his usual level). Projected xG contribution: 0.283 — with neither side clearly dominant."
      },
      {
        "attacker": "Toni Martínez",
        "attacker_role": "ST",
        "attacker_market_value": 7300000,
        "attacker_height": 180,
        "attacker_skill_quality": 0.49,
        "defenders": [
          "Yoel Lago",
          "Sebastián Cáceres"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.469,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.184,
        "xg_contribution": 0.33,
        "xg_multiplier": 0.9758,
        "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.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Yoel Lago",
            "role": "CB",
            "market_value": 7000000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.816
          },
          {
            "player": "Sebastián Cáceres",
            "role": "CB",
            "market_value": 4099999,
            "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.816
          }
        ],
        "duel_analysis": "Toni Martínez (ST) is evenly matched against Yoel Lago and Sebastián Cáceres in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.98 (×1.00 = his usual level). Projected xG contribution: 0.330 — with neither side clearly dominant."
      },
      {
        "attacker": "Abderrahman Rebbach",
        "attacker_role": "ST",
        "attacker_market_value": 2400000,
        "attacker_height": 176,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Yoel Lago",
          "Sebastián Cáceres"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.469,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.0745,
        "xg_multiplier": 0.9174,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.4,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Yoel Lago",
            "role": "CB",
            "market_value": 7000000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Sebastián Cáceres",
            "role": "CB",
            "market_value": 4099999,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Abderrahman Rebbach (ST) faces tough defensive resistance against Yoel Lago and Sebastián Cáceres in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.92 (×1.00 = his usual level). Projected xG contribution: 0.074 — and is restricted in space and time on the ball."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.426,
      "away_midfield_power": 0.469,
      "home_creative_power": 0.383,
      "away_creative_power": 0.443,
      "home_defensive_power": 0.383,
      "away_defensive_power": 0.412,
      "home_dominance_ratio": 0.476,
      "home_midfield_count": 2,
      "away_midfield_count": 3,
      "home_midfield_players": [
        "Hugo Burcio",
        "Aleix Febas"
      ],
      "away_midfield_players": [
        "Antonio Blanco",
        "Denis Suárez",
        "Pablo Ibáñez"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 49.3,
      "estimated_possession_away_pct": 50.7,
      "home_pressing_actions_per_90": 6.1,
      "away_pressing_actions_per_90": 6.3,
      "home_key_passes_projected": 3.8,
      "away_key_passes_projected": 4.2,
      "home_throughball_threat": 1.8,
      "away_throughball_threat": 1.9,
      "key_personal_duel": "Aleix Febas vs Antonio Blanco",
      "midfield_lambda_factor_home": 0.992,
      "midfield_lambda_factor_away": 1.01
    },
    "formation_analysis": {
      "home_formation": "3-4-3",
      "away_formation": "5-3-2",
      "home_tactical_bonus": 0.0,
      "away_tactical_bonus": 0.0,
      "formation_verdict": "Tactical parity between 3-4-3 and 5-3-2. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 0.859,
    "away_lambda": 0.849,
    "home_top_threat_zones": [
      "Shadow Striker vs Centre Back — Half-Space Threat",
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
    ],
    "away_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
    ],
    "home_player_antagonists": {
      "Hugo Burcio": {
        "opponents": [
          "Ville Koski",
          "Antonio Blanco"
        ],
        "primary_zone": "LWB vs CB",
        "source": "attacking_duel, midfield_pairing"
      },
      "Aleix Febas": {
        "opponents": [
          "Pablo Ibáñez",
          "Antonio Blanco",
          "Denis Suárez"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Hugo Álvarez": {
        "opponents": [
          "Ville Koski"
        ],
        "primary_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
        "source": "attacking_duel"
      },
      "Ferrán Jutglà": {
        "opponents": [
          "Ville Koski"
        ],
        "primary_zone": "Shadow Striker vs Centre Back — Half-Space Threat",
        "source": "attacking_duel"
      },
      "Iago Aspas": {
        "opponents": [
          "Ville Koski",
          "Nahuel Tenaglia"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Yoel Lago": {
        "opponents": [
          "Jonny Otto",
          "Lucas Boyé",
          "Toni Martínez",
          "Abderrahman Rebbach"
        ],
        "primary_zone": "LWB vs CB",
        "source": "defensive_duel"
      },
      "Sebastián Cáceres": {
        "opponents": [
          "Lucas Boyé",
          "Toni Martínez",
          "Abderrahman Rebbach"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Ionuț Radu": {
        "opponents": [
          "Toni Martínez",
          "Lucas Boyé"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Marcos Alonso": {
        "opponents": [
          "Abderrahman Rebbach"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Javi Galán": {
        "opponents": [
          "Toni Martínez"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Álvaro Núñez": {
        "opponents": [
          "Lucas Boyé"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Ville Koski": {
        "opponents": [
          "Hugo Burcio",
          "Hugo Álvarez",
          "Ferrán Jutglà",
          "Iago Aspas"
        ],
        "primary_zone": "LWB vs CB",
        "source": "defensive_duel"
      },
      "Pablo Ibáñez": {
        "opponents": [
          "Aleix Febas"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "defensive_duel, midfield_pairing"
      },
      "Nahuel Tenaglia": {
        "opponents": [
          "Iago Aspas"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Jonny Otto": {
        "opponents": [
          "Yoel Lago"
        ],
        "primary_zone": "LWB vs CB",
        "source": "attacking_duel"
      },
      "Antonio Blanco": {
        "opponents": [
          "Aleix Febas",
          "Hugo Burcio"
        ],
        "primary_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
        "source": "attacking_duel, midfield_pairing"
      },
      "Denis Suárez": {
        "opponents": [
          "Aleix Febas"
        ],
        "primary_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
        "source": "attacking_duel, midfield_pairing"
      },
      "Lucas Boyé": {
        "opponents": [
          "Yoel Lago",
          "Sebastián Cáceres"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Toni Martínez": {
        "opponents": [
          "Yoel Lago",
          "Sebastián Cáceres"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Abderrahman Rebbach": {
        "opponents": [
          "Yoel Lago",
          "Sebastián Cáceres"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Antonio Sivera": {
        "opponents": [
          "Ferrán Jutglà",
          "Hugo Álvarez"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Nicolás Valentini": {
        "opponents": [
          "Ferrán Jutglà"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Aleix Febas vs Antonio Blanco will be the pivotal duel. Total antagonist xG — Home: 0.62, Away: 0.85. Home danger zone: Shadow Striker vs Centre Back — Half-Space Threat. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle.",
    "lambda_factors": {
      "league_anchor": 1.35,
      "home_advantage_factor": 1.15,
      "home_gk_opposition_factor": 0.9975,
      "away_gk_opposition_factor": 0.9772,
      "home_set_piece_bonus": 0.036,
      "away_set_piece_bonus": 0.0,
      "home_defensive_solidity_vs": 1.0096,
      "away_defensive_solidity_vs": 0.9912,
      "home_midfield_factor": 0.992,
      "away_midfield_factor": 1.01,
      "stage_discount": 1.0,
      "quality_gap_applied": false,
      "home_avg_quality": 0.4628,
      "away_avg_quality": 0.4571,
      "avg_quality_gap": 0.0057,
      "squad_value_gap_log": 0.0464,
      "top5_value_gap_log": 0.096,
      "attack_value_gap_log": -0.0728,
      "elite_count_gap": 0,
      "combined_quality_gap": 0.0091,
      "stronger_lambda_boost": 0.0,
      "weaker_lambda_suppression": 0.0,
      "home_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.35
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.6199,
          "n_duels": 5,
          "duel_confidence": 0.75,
          "result": 0.8024
        },
        {
          "label": "midfield_factor",
          "factor": 0.992,
          "result": 0.796
        },
        {
          "label": "formation_bonus",
          "factor": 1.0,
          "result": 0.796
        },
        {
          "label": "home_advantage",
          "factor": 1.15,
          "result": 0.9154
        },
        {
          "label": "standing_factor",
          "factor": 0.8846,
          "result": 0.8098
        },
        {
          "label": "gk_opposition",
          "factor": 0.9975,
          "result": 0.8077
        },
        {
          "label": "defensive_solidity",
          "factor": 1.0096,
          "result": 0.8155
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.036,
          "result": 0.8515
        },
        {
          "label": "engine_clamp",
          "pre": 0.8515,
          "result": 0.8515,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": false,
          "combined_quality_gap": 0.0091,
          "factor": 1.0,
          "pre": 0.8515,
          "result": 0.8515
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 0.8515
        },
        {
          "label": "bench_bonus",
          "side": "home",
          "bonus": 0.1389,
          "result": 0.9899
        },
        {
          "label": "fbref_blend",
          "side": "home",
          "applied": true,
          "blending_weight": 0.228,
          "empirical_lambda": 0.3093,
          "result": 0.8347
        },
        {
          "label": "router_clamp",
          "pre": 0.8347,
          "result": 0.835,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 1.0286,
          "pre": 0.835,
          "result": 0.8589,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 0.859
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 0.859
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 0.859,
          "result": 0.859,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "competition_calibration",
          "applied": false,
          "reason": "no_sofascore_matches_data",
          "samples": 0,
          "scale": 1.0,
          "observed_total_goals": 0.0,
          "result": 0.859
        }
      ],
      "away_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.35
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.8486,
          "n_duels": 6,
          "duel_confidence": 0.75,
          "result": 0.9739
        },
        {
          "label": "midfield_factor",
          "factor": 1.01,
          "result": 0.9837
        },
        {
          "label": "formation_bonus",
          "factor": 1.0,
          "result": 0.9837
        },
        {
          "label": "home_advantage",
          "factor": 1.0,
          "result": 0.9837
        },
        {
          "label": "standing_factor",
          "factor": 0.9113,
          "result": 0.8964
        },
        {
          "label": "gk_opposition",
          "factor": 0.9772,
          "result": 0.876
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9912,
          "result": 0.8684
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.0,
          "result": 0.8684
        },
        {
          "label": "engine_clamp",
          "pre": 0.8684,
          "result": 0.8684,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": false,
          "combined_quality_gap": 0.0091,
          "factor": 1.0,
          "pre": 0.8684,
          "result": 0.8684
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 0.8684
        },
        {
          "label": "bench_bonus",
          "side": "away",
          "bonus": 0.1729,
          "result": 1.0409
        },
        {
          "label": "fbref_blend",
          "side": "away",
          "applied": true,
          "blending_weight": 0.228,
          "empirical_lambda": 0.3086,
          "result": 0.8739
        },
        {
          "label": "router_clamp",
          "pre": 0.8739,
          "result": 0.874,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 0.9714,
          "pre": 0.874,
          "result": 0.849,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 0.849
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 0.849
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 0.849,
          "result": 0.849,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "competition_calibration",
          "applied": false,
          "reason": "no_sofascore_matches_data",
          "samples": 0,
          "scale": 1.0,
          "observed_total_goals": 0.0,
          "result": 0.849
        }
      ],
      "home_bench_lambda_bonus": 0.1389,
      "away_bench_lambda_bonus": 0.1729,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "fbref_team_priors": {
        "applied": true,
        "home_squad": "Celta Vigo",
        "away_squad": "Deportivo Alavés",
        "home_goals_per90": 0.25,
        "away_goals_against_per90": 1.67,
        "away_goals_per90": 1.6666666666666667,
        "home_goals_against_per90": 0.25,
        "home_empirical_lambda": 0.309,
        "away_empirical_lambda": 0.309,
        "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": 0.859,
      "pre_competitive_floor_away_lambda": 0.849,
      "pre_calibration_home_lambda": 0.8347,
      "pre_calibration_away_lambda": 0.8739,
      "competition_calibration_applied": false,
      "competition_calibration_reason": "no_sofascore_matches_data",
      "competition_calibration_samples": 0,
      "competition_observed_total_goals": 0.0,
      "competition_calibration_scale": 1.0,
      "neutral_share_preserved": false,
      "final_home_lambda": 0.859,
      "final_away_lambda": 0.849
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 9,
    "opponent_position": 7,
    "standing_lambda_multiplier": 0.8846,
    "attack_index": 0.859,
    "defense_concede_index": 0.859,
    "form_multiplier": 0.987,
    "team_attack_rate_contextual": 1.33,
    "opp_defense_rate_contextual": 1.33,
    "team_ppg": 1.16,
    "opponent_ppg": 1.37
  },
  "away_standing": {
    "available": true,
    "team_position": 7,
    "opponent_position": 9,
    "standing_lambda_multiplier": 0.9113,
    "attack_index": 0.988,
    "defense_concede_index": 0.794,
    "form_multiplier": 1.013,
    "team_attack_rate_contextual": 1.53,
    "opp_defense_rate_contextual": 1.23,
    "team_ppg": 1.37,
    "opponent_ppg": 1.16
  },
  "xgboost_reasoning": {
    "summary": "Antagonist + XGBoost match analysis for Celta vs Alavés. Player statistics regressed using position-specific XGBoost models (G, D, M, F) with 2026-2027 FBref priors. Micro-duels resolved across 3-4-3 vs 5-3-2 (duel lambdas: Home 0.835, Away 0.874). Final calibrated Poisson lambdas: Home 0.859, Away 0.849 (most likely score 0-0).",
    "competition": "LaLiga",
    "model_coverage": {
      "home_starters_count": 11,
      "home_xgboost_players": 11,
      "home_fbref_players": 9,
      "away_starters_count": 11,
      "away_xgboost_players": 11,
      "away_fbref_players": 9,
      "home_bench_modelled": 7,
      "away_bench_modelled": 7
    },
    "team_priors": {
      "applied": true,
      "home_squad": "Celta Vigo",
      "away_squad": "Deportivo Alavés",
      "home_goals_per90": 0.25,
      "away_goals_against_per90": 1.67,
      "away_goals_per90": 1.6666666666666667,
      "home_goals_against_per90": 0.25,
      "home_empirical_lambda": 0.309,
      "away_empirical_lambda": 0.309,
      "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": 0.859,
      "away_lambda": 0.849,
      "micro_duel_home_lambda": 0.835,
      "micro_duel_away_lambda": 0.874
    },
    "calibration_and_pressure": {
      "competition_calibration_applied": false,
      "competition_calibration_scale": 1.0,
      "mismatch_pressure_applied": false,
      "underdog_floor_applied": false
    }
  },
  "timestamp": "2026-10-18T13:31:09Z",
  "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
  }
}